【发布时间】:2011-03-13 06:50:55
【问题描述】:
我们有多个负载平衡的网络服务器机器运行相同的 PHP webapp (LAMP),我想在每台服务器上运行稍微不同的代码(出于测试目的)。我希望使用$_SERVER['SERVER_ADDR'] 超级全局来做这样的事情:
if ($_SERVER['SERVER_ADDR'] == 'XXX.XXX.XXX.XXX') {
echo "Do one thing";
} elseif ($_SERVER['SERVER_ADDR'] == 'YYY.YYY.YYY.YYY') {
echo "Do something else";
}
很遗憾,这不起作用,因为两台机器都将$_SERVER['SERVER_ADDR'] 设置为“127.0.0.1”。如何配置它们以便将$_SERVER['SERVER_ADDR'] 设置为它们的公共 IP 地址?
我猜这个问题可能与 /etc/hosts 有关,因此目前看起来像这样:
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
XXX.XX.XX.XX blahblah
更新...
糟糕!我忽略了考虑 Web 服务器前面的 nginx 反向代理。由于 nginx conf 中的以下行,到这些 Web 服务器的所有流量都来自 nginx:
location / {
root /var/www/staging/current;
proxy_pass http://localhost:8880;
}
【问题讨论】:
标签: php linux lamp superglobals server-farm