我正在将一些网站从一台服务器迁移到另一台服务器。为了避免停机,我在 DNS 更新期间通过旧服务器代理移动的网站。
在原始(代理)服务器上,我有以下内容:
<VirtualHost *:80>
Servername www.mydomain.com
DocumentRoot /var/www/mydomain.com
ProxyPass / http://my-new-server-ip-address/
ProxyPassReverse / http://my-new-server-ip-address/
ProxyPreserveHost On
</VirtualHost>
在新服务器上,我使用 mod_remoteip(Apache 版本 2.4.7)并具有以下内容:
<VirtualHost *:80>
Servername www.mydomain.com
DocumentRoot /var/www/mydomain.com
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy my-old-server-ip-address
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" (proxy)" proxy
SetEnvIf X-Forwarded-For "/.*/" forwarded
# just testing for anything here!!
CustomLog /var/log/mydomain.com/access.log combined env=!forwarded
CustomLog /var/log/mydomain.com/access.log proxy env=forwarded
</VirtualHost>
我想要实现的是,当请求通过代理发送时,而不是直接来自新服务器的请求时,使用不同的日志。“代理”日志从未执行,这让我认为“X-Forwarded-For”标头不是由原始服务器发送的。Apache 文档这里声明“X-Forwarded-For”是一起设置的标题之一。
我知道我遗漏了一些明显的内容但如果有任何帮助我都会很感激!