Neredeyse her zaman kullanmalısınız $host
, çünkü kullanıcı aracısının nasıl davrandığına bakılmaksızın, diğer değişkenlerden birinin semantiğine özellikle ihtiyaç duymazsanız, mantıklı bir şeye sahip olmanız garanti olan tek kişidir.
Fark nginx belgelerinde açıklanmıştır :
$host
"bu öncelik sırasına göre: istek satırından ana bilgisayar adı veya" Ana Bilgisayar "istek başlık alanından ana bilgisayar adı veya bir isteği karşılayan sunucu adı"
$http_host
İstekte mevcutsa, HTTP "Ana Bilgisayar" başlık alanının içeriğini içerir
$server_name
içeren server_name
bu nginx yapılandırmada tarif edildiği gibi, talep işleme sanal konağın. Bir server
çoklu server_name
s içeriyorsa , sadece birincisi bu değişkende mevcut olacaktır.
Kullanıcı aracıları için bir host: host yerine istek satırında host adını göndermesi yasal olduğundan, proxy'lere bağlanma dışında nadiren yapılsa da bunu hesaba katmanız gerekir.
Ayrıca, kullanıcı aracısının bir ana bilgisayar adı gönderemediği durumu da hesaba katmalısınız, örneğin eski HTTP / 1.0 istekleri ve modern kötü yazılmış yazılımlar. Bunu, herhangi bir işe yaramayan, hepsini birden çok web sitesine hizmet ediyorsanız veya sunucunuzda yalnızca tek bir web sitesine sahipseniz, sunucunuzda yalnızca tek bir web sunucusuyla işlem yapabilirsiniz. . İkinci durumda, bunun için de hesaba katmanız gerekir.
Yalnızca $host
değişken, bir kullanıcı aracısının bir HTTP isteği oluştururken yapabileceği olası şeyleri oluşturur.
$scheme
ve$host
...return 301 /forum/index.php?posts/$arg_p/;
cezası çalışır.