Antworten:
$host
ist eine Variable des Core- Moduls.
$ host
Diese Variable entspricht der Zeile Host im Header der Anforderung oder dem Namen des Servers, der die Anforderung verarbeitet, wenn der Host-Header nicht verfügbar ist.
Diese Variable kann in folgenden Fällen einen anderen Wert als $ http_host haben: 1) Wenn der Host-Eingabekopf fehlt oder einen leeren Wert hat, entspricht $ host dem Wert der Direktive server_name; 2) Wenn der Wert von Host die Portnummer enthält, enthält $ host diese Portnummer nicht. Der Wert von $ host ist seit 0.8.17 immer klein geschrieben.
$http_host
ist auch eine Variable desselben Moduls, aber Sie werden sie nicht mit diesem Namen finden, da sie generisch als $http_HEADER
( ref ) definiert ist.
$ http_HEADER
Der Wert des HTTP-Anforderungsheaders HEADER bei Konvertierung in Kleinbuchstaben und bei Konvertierung von 'Strichen' in 'Unterstriche', z. B. $ http_user_agent, $ http_referer ...;
Zusammenfassend:
$http_host
entspricht immer dem HTTP_HOST
Anforderungsheader.$host
gleich $http_host
, klein geschrieben und ohne die Portnummer (falls vorhanden), außer wenn nicht HTTP_HOST
vorhanden oder ein leerer Wert ist . In diesem Fall $host
entspricht dies dem Wert der server_name
Direktive des Servers, der die Anforderung verarbeitet hat.server_name
Anweisungen haben. Wenn Sie im ersten einen regulären Ausdruck haben, wird dieser zum $host
und alle möglichen hässlichen Dinge können beim Umschreiben von Regeln passieren.
$server_name
Variable dem server_name
Wert der Direktive oder dem tatsächlichen Servernamen, der ausgewählt wurde, wenn mehrere server_name
Direktiven vorhanden waren ?
$server_name
ist immer gleich dem ersten Wert, der mit der Anweisung server_name angegeben wurde. Mit Zum Beispiel server_name example.com one.example.com two.example.com;
, $server_name
wird immer „example.com“ sein, unabhängig davon , welcher Host der Benutzer festgelegt hat . Wenn Sie keine haben default_server
, ist der Host möglicherweise etwas völlig anderes (wie example.org).
server_name
, der im aktuellen Serverblock definiert ist. Wenn Sie mehrereserver_name
s haben, wird nur das erste angezeigt.