我将 Mastodon 迁移到一台 4C8G 的 VPS 后由于它的网络到大陆的连通性比较差,所以使用了反向代理,我使用了多级代理,后端获取的IP就固定为我最外层的代理 IP 了,在后台看起来就是多个账号共享同一个 IP 了。
我想要让 Mastodon 获取到真实的访客IP要怎么操作呢? 本文将会介绍一个 nginx 的插件 nginx_http_realip_module ,使用它能够在简单的在多级代理的情况下获取到访客 IP。
nginx_http_realip_module
这个插件的作用就是通过提前预定义 可信代理 的 IP 地址,根据 X-Forwarded-For 信息从中过滤掉可信代理的 IP 地址后,最后剩下的就是真实的访客 IP 了。
官方文档
这里的安装只需要在 web 服务器上安装,前面的代理是不用安装该插件的。
这里的安装都是在 LNMP 环境下的,先进入 lnmp1.7 文件夹,然后编辑 lnmp.conf 在Nginx_Modules_Options 引号内加入 --with-http_realip_module。
Nginx_Modules_Options
--with-http_realip_module
修改为如下所示即可。
Download_Mirror='https://soft.vpser.net' Nginx_Modules_Options='--with-http_realip_module' PHP_Modules_Options='' ##MySQL/MariaDB database directory## MySQL_Data_Dir='/usr/local/mysql/var' MariaDB_Data_Dir='/usr/local/mariadb/var' ##Default website home directory## Default_Website_Dir='/home/wwwroot/default' Enable_Nginx_Openssl='y' Enable_PHP_Fileinfo='n' Enable_Nginx_Lua='n' Enable_Swap='y'
然后在当前目录执行 Nginx 升级命令。
./upgrade.sh nginx
输入当前版本号,按回车即可添加插件,一般来说很快就可以搞定。
我们假设有三台反向代理,一台 Web 服务。
反向代理 1 :10.0.0.1 反向代理 2 :10.0.0.2 反向代理 3 :10.0.0.3 Web-server :10.0.0.4
反向代理 1:
server { listen 80; server_name xxx.test.com; location / { proxy_pass http://10.0.0.2; proxy_http_version 1.1; Proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
反向代理 2:
server { listen 80; server_name xxx.test.com; location / { proxy_pass http://10.0.0.3; proxy_http_version 1.1; Proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
反向代理 3:
server { listen 80; server_name xxx.test.com; location / { proxy_pass http://10.0.0.4; proxy_http_version 1.1; Proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
最后需要配置 Web-server,让他过滤掉可信代理的 IP。
server { listen 80; server_name ip.test.com; #自定义可信代理 IP set_real_ip_from 10.0.0.2; set_real_ip_from 10.0.0.3; set_real_ip_from 10.0.0.4; real_ip_header X-Forwarded-For; #排除代理 IP real_ip_recursive on; root /wwwroot; index index.php; location / { default_type text/html; return 200 'This is text!'; } }
这些全部做完不要忘记 lnmp reload 重新载入每一个结点的 Nginx。一切操作完毕后,我换了一个IP访问我的 Mastodon 的时候,终于显示了一个不一样的 IP,说明 IP 透传功能已经实现了。
下一篇打算写一写 Nginx 的流量负载均衡以及 DNS 解析负载均衡。
可以替代各类web服务器
自定义DDNS服务,超快解析。
使用油猴脚本下载全网所有平台的音乐
来自SaltyLeo的十月份的闲言碎语
记录一下评估版系统转批量激活的一些步骤
目录
热门标签
页面
更多语言
站点信息