frp内网透传真实客户端ip的笔记

默认frp 的tcp穿透80和443是,获得的客户端ip总是127.0.0.1,

编辑frpc配置,

[[proxies]]
name = "web80"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80

你可能会想到用http/https类型来处理,但这对于泛解析是个麻烦,

继续用tcp来处理,

因为frp新版本不再需要haproxy,自身支持proxy-protocol 代理协议实现透传客户端IP,

编辑frpc配置,新增一行transport.proxyProtocolVersion = "v2",

[[proxies]]
name = "web80"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80
transport.proxyProtocolVersion = "v2"

配完上面这个步骤,你发现网站打不开了

接下修改nginx的server{}块的内容, 原内容如下,

server
{
    listen 80;
    listen 443 ssl http2;
    server_name blog.quwei.de;
    index index.php index.html;
    root /www/wwwroot/wordpress;
    #以下省略..

改成如下,

server
{
    listen 80 proxy_protocol; #透传frp
    listen 443 ssl http2 proxy_protocol; #透传frp
    server_name blog.quwei.de;
    index index.php index.html;
    root /www/wwwroot/wordpress;
    
    real_ip_header proxy_protocol; #透传frp
    real_ip_recursive on; #透传frp
    set_real_ip_from 127.0.0.1; #透传frp

再重新打开网页时,就可以了,ip也成功透传了

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注