Nginx'te $ host ve $ http_host arasındaki fark nedir


Yanıtlar:


217

$hostCore modülünün bir değişkeni .

$ konak

Bu değişken, Host üstbilgisi kullanılamıyorsa istek üstbilgisinde veya isteği işleyen sunucunun adında Host satırına eşittir.

Bu değişken bu gibi durumlarda $ http_host değerinden farklı bir değere sahip olabilir: 1) Host giriş üstbilgisi yoksa veya boş bir değere sahipse, $ host sunucu_adı yönergesinin değerine eşittir; 2) Host değeri port numarası içerdiğinde, $ host bu port numarasını içermez. $ host değeri 0.8.17'den beri her zaman küçüktür.

$http_hostaynı modülün bir değişkeni ancak bu adla bulamayacaksınız çünkü genel olarak $http_HEADER( ref ) olarak tanımlanıyor .

$ · HTTP_header

HTTP istek başlığının HEADER değeri küçük harfe dönüştürüldüğünde ve 'tire' olarak 'alt çizgilere' dönüştürüldüğünde, örneğin, $ http_user_agent, $ http_referer ...;


Özetleme:

  • $http_hosther zaman HTTP_HOSTistek üstbilgisine eşittir .
  • $hosteşittir $http_host, küçük ve port numarası olmadan (mevcut ise), ne zaman hariç HTTP_HOSTmevcut değildir veya boş bir değerdir . Bu durumda, isteği işleyen sunucunun yönergesinin $hostdeğerine eşittir server_name.

57
$ host özellikle geçerli sunucu bloğunda tanımlanan ilkserver_name sistemdir. birden fazla server_names'niz varsa, yalnızca ilki görünür.
Jonathan Vanasco

4
Doğru. Aslında, tanımlamak oldukça tipiktir: server_name example.com www.example.com;
glarrain

birden fazla server_namedirektifiniz de olabilir. Eğer ilkinde bir regex varsa, bu olur ve $hostyeniden yazma kuralları sırasında her türlü çirkin şey olabilir.
Jonathan Vanasco

5
Does $server_namedeğişken eşit server_nameyönerge değeri veya çoklu olsaydı seçildi gerçek sunucu adı server_namedirektifleri?
CMCDragonkai

1
@CMCDragonkai $server_nameher zaman sunucu_adı yönergesiyle belirtilen ilk değere eşittir. Örneğin, birlikte server_name example.com one.example.com two.example.com;, $server_namehep, "example.com" olacaktır bakılmaksızın, kullanıcının belirttiği hangi konak arasında . Aslında, a'nız yoksa default_server, ana bilgisayar tamamen farklı bir şey olabilir (example.org gibi).
ATLief
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.