如何使用 frp 与 Proxy Protocol 传递真实 IP 地址
在使用 frp 进行内网穿透时,为了获取客户端的真实 IP 地址,你可以借助 Proxy Protocol 协议。以下是一个简易教程,指导你如何在 frp 配置中启用 Proxy Protocol,并与支持该协议的本地服务(如 Nginx)集成,确保真实 IP 能够正确传递。
准备工作:
- 确保你的 frp 客户端(
frpc
)和服务器端(frps
)已正确安装并配置。 - 确认本地服务(如 Nginx)支持并配置了 Proxy Protocol。
步骤 1:修改 frpc 配置文件
打开 frpc
的配置文件(通常是 frpc.ini
或 frpc.toml
),找到或添加你需要配置的代理段落。这里以 HTTPS 代理为例:
[[proxies]]
name = "web"
type = "https"
localPort = 443
customDomains = ["test.yourdomain.com"]
# 添加此行以启用 Proxy Protocol v2 版本
transport.proxyProtocolVersion = "v2"
步骤 2:配置本地服务支持 Proxy Protocol
以 Nginx 为例,你需要在 Nginx 的配置文件中(通常是 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
)相应 server 区块内,添加对 Proxy Protocol 的支持:
server {
listen 443 ssl proxy_protocol;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
# 解析 Proxy Protocol 并将真实 IP 设置到 X-Real-IP 头
set_real_ip_from 127.0.0.1; # 这里应为 frpc 连接 Nginx 的 IP
real_ip_header proxy_protocol;
location / {
# 此处省略其他配置,如 proxy_pass 等
}
}
步骤 3:重启服务
保存更改后,记得重启 frpc
和 Nginx 服务,使配置生效:
# 重启 frpc
sudo systemctl restart frpc.service
# 重启 Nginx
sudo systemctl restart nginx
注意事项:
- 确保
set_real_ip_from
指令中包含了所有可能作为代理服务器 IP 的地址,特别是当 frpc 与 Nginx 不在同一台机器上运行时。 - Proxy Protocol 支持
v1
和v2
两个版本,根据实际需求选择合适的版本。 - 请确保整个链路中的防火墙规则允许 Proxy Protocol 的头部信息通过。
以上步骤完成后,通过 frp 访问你的 HTTPS 服务时,Nginx 就能正确识别并记录下客户端的真实 IP 地址了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...