nginx 301 重定向 /path 到 /path/ 优化

nginx 301 重定向 /path 到 /path/ 优化

有时用户会手动输入 http://host/path 访问网站,而在nginx 的默认处理中
/path 会被当成一个文件请求,如果 /path 不存在,则判断 /path/ 目录 是否存在
如果目录存在则返回重定向

分析

默认的 try_files 配置是: try_files $uri $uri/ =404;

按照 nginx 默认处理方式,这种情况下回产生两次 request

第一次: 请求 /path ,nginx 发现文件不存在,但目录存在,则返回 301 重定向到 /path/

浏览器收到重定向后,发起第二次请求

第二次: 请求 /path/ ,nginx 根据 index 设定,返回 /path/index.html

优化

防止产生重定向并直接返回目录内容

    location / {
        try_files  $uri $uri/index.html $uri/index.htm =404;
    }

使用 try_files ,此时 nginx 对 /path 请求的工作方式为:

查看 /path 文件是否存在,如果不存在,则查找 /path/index.html 或者 /path/index.htm 是否存在,如果后两者其中一个文件存在,则直接返回文件内容,否则返回 404 状态码

这样省略了 301 重定向,减少了一次请求

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://zwc365.com/2019/10/15/nginx-301-重定向-path-到-path-优化