在使用内网穿透工具frp代理我们的网站时,无法获取到访问的正确IP地址,导致无法正常的记录请求者的IP
3 2025-07-01 00:23:09

问题描述

在使用内网穿透工具frp代理我们的网站时,无法获取到访问的正确IP地址,导致无法正常的记录请求者的IP

解决方案

frp针对这个问题,提供了两种方案,可自行访问frp网站查看,这里我们使用它推荐的一种方法实现(通过Proxy Protocol)

在frp客户端配置代理网站时加入transport.proxyProtocolVersion = "v2"这个配置,如下,使用toml格式配置

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相关配置如下

conf 复制代码
...
    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

目录
2025 Hi code!
为天地立心,为生民立命,为往圣继绝学,为万世开太平