在使用内网穿透工具frp代理我们的网站时,无法获取到访问的正确IP地址,导致无法正常的记录请求者的IP
frp针对这个问题,提供了两种方案,可自行访问frp网站查看,这里我们使用它推荐的一种方法实现(通过Proxy Protocol)
在frp客户端配置代理网站时加入transport.proxyProtocolVersion = "v2"
这个配置,如下,使用toml格式配置
[[proxies]]
name = "http"
type = "http"
localPort = 80
customDomains = ["baidu.cn","www.baidu.cn"]
transport.proxyProtocolVersion = "v2"
[[proxies]]
name = "https"
type = "https"
localPort = 443
customDomains = ["baidu.cn","www.baidu.cn"]
transport.proxyProtocolVersion = "v2"
第二步,在nginx中添加Proxy Protocol相关配置如下
...
listen 80 proxy_protocol ;
listen 443 ssl http2 proxy_protocol ;
server_name www.baidu.cn;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $proxy_protocol_addr;
...
主要在listen的后面加上proxy_protocol
添加代理请求头配置
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $proxy_protocol_addr;
即可在应用中获取请求者的真实IP