3 Stimmen

Die PHP-Variable $_SERVER['SERVER_ADDR'] liefert immer 127.0.0.1

Wir haben mehrere Webserver mit Lastausgleich, auf denen dieselbe PHP-Webanwendung ( LAMP ) und ich möchte auf jedem Server etwas anderen Code laufen lassen ( für Testzwecke ). Ich hatte gehofft, die $_SERVER['SERVER_ADDR'] super global, um so etwas zu tun:

if ($_SERVER['SERVER_ADDR'] == 'XXX.XXX.XXX.XXX') {
  echo "Do one thing";
} elseif ($_SERVER['SERVER_ADDR'] == 'YYY.YYY.YYY.YYY') {
  echo "Do something else";
}

Leider funktioniert dies nicht, da beide Rechner die $_SERVER['SERVER_ADDR'] zu ' 127.0.0.1 '. Wie kann ich sie so konfigurieren, dass $_SERVER['SERVER_ADDR'] auf ihre öffentliche IP-Adresse eingestellt ist?

Ich vermute, dass das Problem etwas mit folgenden Faktoren zu tun hat /etc/hosts Zur Veranschaulichung sieht es derzeit wie folgt aus:

127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
XXX.XX.XX.XX    blahblah

Update...

Hoppla ! Ich habe nicht bedacht, dass die nginx Reverse-Proxy vor den Webservern. Der gesamte Verkehr zu diesen Webservern kommt von nginx aufgrund der folgenden Zeile in der nginx conf:

location / {
    root                  /var/www/staging/current;
    proxy_pass            http://localhost:8880;
}

0voto

The Surrican Punkte 27908

Sie sollten wirklich eine serverspezifische Konfiguration haben, die geladen wird und eine Server-ID enthält. Jedes System verhält sich anders und die Verwendung von IP-Adressen und Hostnamen ist definitiv sehr fehleranfällig. In der Regel befinden sich viele Anwendungen auf dem Server und von einem Tag auf den anderen kann es sein, dass es nicht mehr funktioniert und die Fehlersuche erschwert wird (z.B. hat jemand die nette Idee, einen Reverse-Eintrag einzurichten, damit Mails nicht mehr gespammt werden).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X