Di Nginx, apa perbedaan antara variabel $host
dan $http_host
.
sumber
Di Nginx, apa perbedaan antara variabel $host
dan $http_host
.
$host
adalah 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_host
juga 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_host
sama dengan selalu HTTP_HOST
header permintaan.$host
sama dengan $http_host
, huruf kecil dan tanpa nomor port (jika ada), kecuali ketika HTTP_HOST
tidak ada atau nilai kosong . Dalam hal itu, $host
sama dengan nilai server_name
direktif server yang memproses permintaan.
server_name
yang didefinisikan dalam blok server saat ini. jika Anda memiliki banyakserver_name
s, hanya yang pertama yang akan muncul.server_name
arahan juga. jika Anda memiliki regex di yang pertama, itu menjadi$host
, dan segala macam hal buruk dapat terjadi selama aturan penulisan ulang.$server_name
variabel sama dengan nilaiserver_name
direktif atau nama server aktual yang dipilih jika ada beberapaserver_name
arahan?$server_name
selalu sama dengan nilai pertama yang ditentukan dengan direktif server_name. Misalnya, denganserver_name example.com one.example.com two.example.com;
,$server_name
akan selalu menjadi "example.com", terlepas dari host mana yang telah ditentukan pengguna . Bahkan, jika Anda tidak memilikidefault_server
, host mungkin adalah sesuatu yang sangat berbeda (seperti example.org).