nginx 常用配置记录

$host $http_host 区别:

$host 含义:

官网解释:链接

nginx 常用配置记录

优先级:请求行的主机名[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

nginx 常用配置记录

2. [2]请求头字段 Host 的值中的主机名

如图请求头 Host 值为 localhost:81,那 $host 值为 localhost
nginx 常用配置记录

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
nginx 常用配置记录

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;
        }
    }
}
上一篇:【Azure 应用服务】在Azure App Service多实例的情况下,如何在应用中通过代码获取到实例名(Instance ID)呢?


下一篇:Mac网站优化分析:Link-Assistant WebSite Auditor Enterprise