千古八方的博客

  • 程序开发
    • Android
    • Spring Boot
  • 数据私有化
    • NAS
    • 私有云
    • 内网穿透
    • 服务器
  • 留言
  • 搞事
进学
为学无间断,如流水行云,日进而不已也
  1. 首页
  2. NAS
  3. 正文

Haproxy搭配NPS内网穿透,获取客户端的源IP

2022年5月26日 532点热度 0人点赞 0条评论

在自建的NAS上搭建了Wordpress网站,把CNZZ站点访问统计的代码添加到了页面,结果发现cnzz的链接被屏蔽了。

然后试了试友盟、百度统计同样也是当成广告给屏蔽了。

关于如何屏蔽广告可参考 NAS上搭建DNS服务,统一屏蔽家庭网络上的所有广告

打开 anti-ad.net 网站,下载一份广告屏蔽地址,查询了下果真被屏蔽了。

所以还是在服务端自己统计吧,虽然结果不太准确,但能有个大概就好。

在Wordpress 上安装 WP Statistics 统计插件后,结果发现客户端地址都是127.0.0.1,也就是说经过NPS穿透后,源地址是无法传递的。

虽然NPS支持http源地址转发,但是https是不可以的 

从Nginx文档上了解到,使用 proxy_protocol stream 的方式可以额外添加这个信息,原理如下:

proxy protocol

proxy protocol

可惜目前Nginx默认集成了 http的方式。 如果使用https 则需要tcp的方式携带源地址信息, Nginx默认没有集成,需要临时编译,这样后期自动升级有些麻烦。

 

所以公网服务器,选择了Haproxy作为网关 ,整个结构运行原理如下:

客户端  -----> Haproxy (携带客户端IP) -----> NPS (TCP隧道透传,公网机器) ----> NPC(TCP隧道透传,内网NAS机器) -----> Nginx (内网NAS机器,设置header 传给PHP程序)--> PHP

 

Haproxy 增加配置如下:

listen web
        bind 0.0.0.0:443
        mode tcp
        option forwardfor
        server web1 127.0.0.1:1443 send-proxy check inter 3000 fall 3 rise 5

 

NPS、NPC 均不用配置,使用TCP穿透即可。 1433 <---> 1433

 

内网NAS上的Nginx 增加配置如下:

server {
        listen 1443 ssl http2 default_server proxy_protocol;       # 这里添加 proxy_protocol 协议
        listen [::]:1443 ssl http2 default_server proxy_protocol;  # 这里添加 proxy_protocol 协议 
        
        # 其他信息略...

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_param REMOTE_ADDR $proxy_protocol_addr;  # 这里把客户端源地址,设置到REMOTE_ADDR里,方便 WP Statistics 接收
                fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        }

}

 

这样客户端与内网NAS通信时全程https,并且wordpress 里WP Statistics 统计插件还能够接收到客户端的源IP,效果如下:

WP Statistics

WP Statistics

标签: NPS 内网穿透
最后更新:2022年5月27日

千古八方

物格而后知至,知至而后意诚,意诚而后心正

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

千古八方

物格而后知至,知至而后意诚,意诚而后心正

工具/友链

资源导航 – NAS、私有云存储
在线工具 – MD5、SHA、BASE64、URL编解码
在线工具 – 贷款计算器
在线工具 – IPv4/IPv6地址查询
在线工具 – 高校信息查询

千古八方 在 B站

千古八方 在 知乎

我的微信小程序:
微信小程序-城市生活成本查询
城市生活成本查询
库房物资流水记账簿
分类
  • Android
  • Linux
  • NAS
  • NEAT
  • Spring Boot
  • Windows
  • 内网穿透
  • 回忆
  • 散篇
  • 服务器
  • 未分类
  • 私有云
  • 致富之路

COPYRIGHT © 2022 千古八方的博客. ALL RIGHTS RESERVED.

京ICP备14020471号