nginx "server" -Direktive mit mehreren "server_name" -Einträgen: Immer wird der erste an PHP $ _SERVER ['SERVER_NAME'] übergeben
Meine Konfiguration-Datei hat eine server
Richtlinie-block, der beginnt mit...
server {
server_name www.example1.com www.example2.com www.example3.com;
...um auf die Website zugegriffen werden, die mit verschiedenen domain-Namen.
Aber PHP ist $_SERVER['SERVER_NAME']
gibt immer den ersten Eintrag von server_name
, in diesem Fall http://www.example1.com
Also ich habe keine Möglichkeit, aus dem PHP-code zu wissen, welche Domäne verwendet der Benutzer auf die Website zugreifen.
Gibt es eine Möglichkeit zu sagen, nginx/fastcgi-pass den echten domain-Namen verwendet, um auf die Website zugreifen?
Die einzige Lösung, die ich bisher gefunden habe, ist, wiederholen Sie den gesamten server
block für jede domain mit einem deutlichen server_name
- Eintrag, aber natürlich bin ich auf der Suche für eine bessere.
InformationsquelleAutor der Frage Paolo | 2015-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Set
SERVER_NAME
zu verwenden$host
in Ihremfastcgi_params
Konfiguration.Quelle: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param
InformationsquelleAutor der Antwort Tan Hong Tat
Dieser bestimmt ist und die richtige Lösung ist die Verwendung
$_SERVER['HTTP_HOST']
in Ihrem code statt.Sollten Sie interpretieren
SERVER_NAME
als überprüft server-Namen, undHTTP_HOST
als Benutzer-Eingabe, die geändert werden kann, ganz einfach, und so sollte nicht vertraut werden.InformationsquelleAutor der Antwort Sjon