标签/Tag为[TransparentProxyIPs]的文章

PSGI 环境下的MT留言IP问题,其实很简单 ,

切换 MT 运行环境为nginx + PSGI,后台速度的确刷一下上去了。 但是,由于是所有的 cgi/pl 文件其实都交给了服务器的 mt-starman-daemon 本地网关守护进程, 所以所有的程序的来访IP都会变成 127.0.0.1 。 检查一下后台日志,的确如此,其他都不重要,但是留言/评论 的IP地址就不能不说遗憾。

检查配置 mt-starman-daemon 时的增加的 nginx 设置,如下:

codelocation /cgi-bin/mt/ {
proxy_set_headerHost $http_host;
proxy_set_headerX-Forwarded-Host $host;
proxy_set_headerX-Real-IP $remote_addr;
proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://starman;
}

配置中明确有原始访问的IP。。 那么还是看 MT 的程序。 根据直觉,直接查看 MT/App.pm, 搜索关键词 $ENV{REMOTE_ADDR},结果定位到如下:

codemy $trusted = $app->config->TransparentProxyIPs || 0;
my $remote_ip = (
$ENV{MOD_PERL}
? $app->{apache}->connection->remote_ip
: $ENV{REMOTE_ADDR}
);
$remote_ip ||= '127.0.0.1';
my $ip
= $trusted
? $app->get_header('X-Forwarded-For')
: $remote_ip;

呃, MT 本身就有这个功能。。。。。也就是 TransparentProxyIPs 。 这下简单了。 打开 mt-config.cgi, 增加以下设置:

TransparentProxyIPs 1

保存。 重启动 mt-starman-daemon。

再次发一条评论,测试可以正常获取原始IP地址。

弯路一堆。 幸好OK。

MovableType.org 一搜索。有详细解释,地址如下: https://movabletype.org/documentation/appendices/config-directives/transparentproxyips.html

-bbb。

Anyway,解决就好。

--EOF--