FRPC内网穿透获取真实IP失败
时间: 2024-01-20 16:14:22 浏览: 148
获取真实IP
FRPC内网穿透获取真实IP失败的原因是因为FRPC是在内网中运行的,所以获取到的IP地址是内网IP地址,而不是真实的公网IP地址。即使在nginx中设置了【proxy_set_header X-Real-IP $remote_addr;】也会在FRPC穿透时被覆盖。因此,我们需要在nginx中自定义一个参数来存储真实IP,并将其传递给内网,以便获取请求用户的真实IP地址。
以下是一个示例代码,以nginx为例:
```nginx
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 自定义参数
proxy_set_header X-Real-IP-From $remote_addr;
}
```
然后,在内网中,我们可以通过获取请求头中的X-Real-IP-From参数来获取真实IP地址。以下是一个以Django为例的代码:
```python
def get_ip_address(request):
ip = request.META.get('HTTP_X_REAL_IP_FROM', "")
if not ip:
ip = request.META.get('REMOTE_ADDR', "")
client_ip = ip.split(",")[-1].strip() if ip else ""
return client_ip
```
阅读全文