Jawaban:
$hostadalah variabel dari modul Core .
$ host
Variabel ini sama dengan Host baris di header permintaan atau nama server yang memproses permintaan jika header Host tidak tersedia.
Variabel ini mungkin memiliki nilai yang berbeda dari $ http_host dalam kasus-kasus seperti: 1) ketika header input Host tidak ada atau memiliki nilai kosong, $ host sama dengan nilai direktif server_name; 2) ketika nilai Host berisi nomor port, $ host tidak menyertakan nomor port itu. Nilai $ host selalu lebih kecil sejak 0.8.17.
$http_hostjuga merupakan variabel dari modul yang sama tetapi Anda tidak akan menemukannya dengan nama itu karena ia didefinisikan secara umum sebagai $http_HEADER( ref ).
$ http_HEADER
Nilai header permintaan HTTP HEADER saat dikonversi ke huruf kecil dan dengan 'tanda hubung' dikonversi ke 'garis bawah', misalnya $ http_user_agent, $ http_referer ...;
Meringkas:
$http_hostsama dengan selalu HTTP_HOSTheader permintaan.$hostsama dengan $http_host, huruf kecil dan tanpa nomor port (jika ada), kecuali ketika HTTP_HOSTtidak ada atau nilai kosong . Dalam hal itu, $hostsama dengan nilai server_namedirektif server yang memproses permintaan.server_namearahan juga. jika Anda memiliki regex di yang pertama, itu menjadi $host, dan segala macam hal buruk dapat terjadi selama aturan penulisan ulang.
$server_namevariabel sama dengan nilai server_namedirektif atau nama server aktual yang dipilih jika ada beberapa server_namearahan?
$server_nameselalu sama dengan nilai pertama yang ditentukan dengan direktif server_name. Misalnya, dengan server_name example.com one.example.com two.example.com;, $server_nameakan selalu menjadi "example.com", terlepas dari host mana yang telah ditentukan pengguna . Bahkan, jika Anda tidak memiliki default_server, host mungkin adalah sesuatu yang sangat berbeda (seperti example.org).
server_nameyang didefinisikan dalam blok server saat ini. jika Anda memiliki banyakserver_names, hanya yang pertama yang akan muncul.