我之前设置过,它在其他服务器上也能正常工作,但我无论如何也想不出为什么它在这种情况下不起作用,尽管我有一个可能的理论。所有这些都在亚马逊网络服务中。
因此,在这种情况下,我们使用 IIS 8 在 Windows 服务器上托管主站点。博客在另一台运行 Ubuntu/Apache 2.4.6 的服务器上托管 WordPress。主站点位于 VPC 中,以支持多个 IP 地址。博客位于 VPC 之外。
其他设置(有效)都使用 nginx 作为反向代理服务器而不是 IIS,并且代理和服务器位于同一个 VPC 中。这真的很重要吗?
从工作配置来看:
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 172.31.x.x/32
非工作配置:
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 54.2x.x.x
我也尝试过类似的做法,比如:
RemoteIPTrustedProxy 54.2x.x.x # tried /32 and /24
RemoteIPInternalProxy 54.x.x.x/32 # also tried /24
RemoteIPTrustedProxy www...
使用测试 PHP 页面来查看它是否正常工作,我看到了以下内容print_r($_SERVER);
:
[HTTP_X_FORWARDED_BY] => www.....
[HTTP_X_FORWARDED_FOR] => x.x.x.x:x
[SERVER_ADDR] => 10.230.x.x
[SERVER_PORT] => 80
[REMOTE_ADDR] => 54.2x.x.x
PHP 的 getheaders 函数的输出如下:
[X-Forwarded-By] => www....
[X-Forwarded-For] => x.x.x.x:x
这文档列出作为内联网 IP 地址。模块真的因为没有检测到内联网块mod_remoteip
而172.16/12
拒绝正常工作吗?我在错误日志中也找不到任何相关信息。
以这种方式运作似乎很愚蠢,但这是唯一有意义的理论。
另外值得注意的是,因为我知道有人会问:我们在设置博客服务器后设置了 VPC,但我们还没有完成在 VPC 内重新启动它的工作。我试图在没有它的情况下让它工作,但如果这是问题所在,那么我们会考虑这样做。
谢谢。