使用frp穿透后,后端获取到的IP地址变成了frpc的IP,而且nginx的日志里的IP也是frpc的IP,给日志审计带来了很大的麻烦。使用如下方法可以获得访客的真实IP:

首先修改frpc的配置,在http或https隧道中添加一行:

proxy_protocol_version = v2

此处写v1或v2均可(你的服务器支持v2的前提下),且建议最好使用v2。

接着nginx的配置文件server字段的listen xx后面添加proxy_protocol。例如:

listen 80;
listen 443 ssl http2;

应改为

listen 80 proxy_protocol;
listen 443 ssl http2 proxy_protocol;

最后在server字段里添加

real_ip_header proxy_protocol; 
real_ip_recursive on; 
set_real_ip_from 127.0.0.1;

注意127.0.0.1是frpc的ip,如果你的frpc安装到了局域网的其他主机,则需要修改为正确的ip。如果此处ip设置不正确,获取到的用户ip将仍为frpc的ip。

最后重载nginx,重启frpc,nginx日志中的ip和php获取到的ip应该均为客户端的公网ip了。

via:https://www.mmuaa.com/post/e4812c0b2fb1e2c8.html

参与评论