nginx 常用配置記錄
阿新 • • 發佈:2021-11-11
$host
$http_host
區別:
$host 含義:
官網解釋:連結
優先順序:請求行的主機名[1] > 請求頭欄位 Host 中的主機名[2] > 與請求匹配的伺服器名稱[3]
ip或域名,不包含埠;如:訪問
http://www.juejin.cn:300
, 主機名就是www.juejin.cn
;訪問http://192.168.1.128:8000
主機名就是192.168.1.128
1. [1]請求行的主機名
請求地址中的主機名,如圖請求地址為 http://localhost:81
,那麼 $host
值為 localhost
2. [2]請求頭欄位 Host 的值中的主機名
如圖請求頭 Host
值為 localhost:81
,那 $host
值為 localhost
3. [3]與請求匹配的伺服器名稱
此時的 $host
= $server_name
, 比如 nginx 配置如下:
server {
listen 81;
server_name h5.juejin.cn locahost;
rewrite ^/(.*) https://$http_host/$1 redirect;
}
訪問地址為 http://h5.juejin.cn:81
時,$server_name
值為 h5.juejin.cn
訪問地址為 http://localhost:81
$server_name
值還是為 h5.juejin.cn
$http_host 含義
請求頭欄位 Host 的值,既包含主機名[主機名],也包含埠
訪問地址為 http://h5.juejin.cn:81
時,$http_host
值為 h5.juejin.cn:81
訪問地址為 http://localhost:81
時,注意 $server_name
值還是為 h5.juejin.cn
如圖請求頭 Host
值為 localhost:81
,那 $http_host
值為 localhost:81
1. 重定向
server { listen 80; server_name h5.juejin.cn; location / { if ($scheme = 'http'){ ## 永久重定向至 https ; 需要注意到底使用 $host 還是 $http_host return 301 https://$host$request_uri; ## 永久重定向至 https rewrite ^(.*) https://$server_name$1 permanent; ## 臨時重定向至 https rewrite ^(.*) https://$server_name$1 permanent; rewrite ^/(.*) /test/$1 redirect; } } }