千古八方的博客

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

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

2022年5月26日 60点热度 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日

千古八方

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

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

千古八方

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

最新 热点 随机
最新 热点 随机
千千静听更换歌词服务器的方法 Nextcloud 使用occ命令清理文件版本 Springboot从2.1.4升级到2.7.2后,访问静态资源,提示 page not found Nextcloud 预览图与文件名不一致的解决方法 服务器为什么大多用Linux 系统? Ubuntu dpkg 清理 deinstall 标记的包
千千静听更换歌词服务器的方法服务器为什么大多用Linux 系统?Nextcloud 预览图与文件名不一致的解决方法Springboot从2.1.4升级到2.7.2后,访问静态资源,提示 page not foundNextcloud 使用occ命令清理文件版本
如何检查服务器是否遭到黑客攻击? 命令行手动升级 Nextcloud 自建 NAS,系统安全防护配置(三) 备份篇 Creo 提示 【C:\Windows\system32无访问权限,请为轨迹选择另外一个启动目录】 Nextcloud 局域网上传速度慢 千千静听更换歌词服务器的方法
分类
  • Android
  • NAS
  • Spring Boot
  • Windows
  • 内网穿透
  • 回忆
  • 散篇
  • 普通人的致富之路在哪里
  • 服务器
  • 未分类
  • 私有云
归档
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2020年3月
  • 2020年1月
  • 1990年1月
标签聚合
linux 群晖NAS Android Utils 私有云 Windows 我开源的APP 服务器 NAS Nextcloud 散篇 Spring Boot TrueNAS NPS 安全维护 ubuntu 内网穿透 Android系统编译 Android Widgets
友情链接

资源导航 – NAS、私有云存储
在线工具 – MD5、SHA、BASE64、URL编解码
在线工具 – 贷款计算器

最近评论
小猪 发布于 5 天前(08月13日) 请问有没有自建云端的方法?
哈哈 发布于 3 周前(07月27日) 来看看,不错不错

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

京ICP备14020471号