因为我的博客一直放在本地设备上边,然后使用的是Frp
穿透出去,这样造成了外部访问的时候,返回来的都是内网IP在访问,也就造成了在使用Access
插件的时候,在后台控制页面显示的访问IP全是设备的内网IP(如下图),其实影响也不大,我也没太在意这个。不过今天偶然间看到有人在说这个问题,然后发现解决这个问题其实很简单,只需要在frp里增加一个Proxy Protocol
协议就可以了。
Frpc配置
这个非常简单,根据官方文档的说明
只需要在代理配置中增加一行
proxy_protocol_version = v2
即可开启此功能。
# frpc.ini
[web]
type = https
local_port = 443
custom_domains = test.yourdomain.com
# 目前支持 v1 和 v2 两个版本的 proxy protocol 协议。
proxy_protocol_version = v2
然后在Nginx
里边配置一下就可以了。
Nginx配置
同样根据官方文档的说明
本地的 HTTPS 服务可以通过在 nginx 的配置中启用
Proxy Protocol
的解析并将结果设置在X-Real-IP
这个 Header 中就可以在自己的 Web 服务中通过X-Real-IP
获取到用户的真实 IP
这里只需在监听的端口后边加上Proxy Protocol
并设置好real_ip
及其header
就可以了。
server
{
listen 80 proxy_protocol;
listen 443 ssl http2 proxy_protocol;
...
set_real_ip_from x.x.x.x/x; # em:set_real_ip_from 192.168.1.0/24;
real_ip_header proxy_protocol;
}
最后重启Nginx
和Frpc
服务就可以了。
之后就能正常获取到访问的真实IP了(如下图)。
版权声明:本文为原创文章,版权归 Alex 所有
本文链接:https://www.nerocats.com/archives/588/
转载时须注明出处及声明
配完直接400
tcp 这边如何获取真实IP呢
老哥 在网站配置里添加这个之后 proxy_protocol 网站无法正常运行了怎么破
我也运行不了。。我是宝塔面板的,看了好几个贴子,都没法成功设置。。(ó﹏ò。)
他貌似是之前的穿透服务不支持,换一个就可以了,理论上来说照这样配置是可行的,只是本地内网访问会出错。
我是自己跑的frps,试了好几次都不行。然后看别人说直接套个cdn,让cdn发协议头过来
结果后台日志现在全都是cdn
已经懵了(ó﹏ò。)