Câu trả lời:
$host
là một biến của mô-đun Core .
$ máy chủ
Biến này bằng với Máy chủ dòng trong tiêu đề yêu cầu hoặc tên của máy chủ xử lý yêu cầu nếu tiêu đề Máy chủ không khả dụng.
Biến này có thể có giá trị khác với $ http_host trong các trường hợp như vậy: 1) khi tiêu đề đầu vào Máy chủ vắng mặt hoặc có giá trị trống, $ host bằng với giá trị của lệnh server_name; 2) khi giá trị của Máy chủ chứa số cổng, $ host không bao gồm số cổng đó. Giá trị của $ host luôn là chữ thường kể từ 0.8.17.
$http_host
cũng là một biến của cùng một mô-đun nhưng bạn sẽ không tìm thấy nó với tên đó bởi vì nó được định nghĩa chung là $http_HEADER
( ref ).
$ http_HEADER
Giá trị của tiêu đề yêu cầu HTTP Header khi được chuyển đổi thành chữ thường và với 'dấu gạch ngang' được chuyển đổi thành 'dấu gạch dưới', ví dụ: $ http_user_agent, $ http_Vferer ...;
Tóm tắt:
$http_host
bằng luôn luôn HTTP_HOST
tiêu đề yêu cầu.$host
bằng $http_host
, chữ thường và không có số cổng (nếu có), trừ khi HTTP_HOST
vắng mặt hoặc là một giá trị trống . Trong trường hợp đó, $host
bằng giá trị của lệnh server_name
của máy chủ đã xử lý yêu cầu.server_name
chỉ thị quá. nếu bạn có regex trong lần đầu tiên, điều đó sẽ trở thành $host
và tất cả các loại công cụ xấu xí có thể xảy ra trong các quy tắc viết lại.
$server_name
biến bằng với server_name
giá trị của chỉ thị hoặc tên máy chủ thực tế mà đã được lựa chọn nếu có nhiều server_name
chỉ thị?
$server_name
luôn bằng giá trị đầu tiên được chỉ định với lệnh server_name. Ví dụ: với server_name example.com one.example.com two.example.com;
, $server_name
sẽ luôn là "example.com", bất kể người dùng đã chỉ định máy chủ nào . Trên thực tế, nếu bạn không có default_server
, máy chủ có thể là một thứ hoàn toàn khác (như example.org).
server_name
được xác định trong khối máy chủ hiện tại. nếu bạn có nhiềuserver_name
s, chỉ cái đầu tiên sẽ xuất hiện.