【问题标题】:Nginx incorrect locations handlingNginx 错误位置处理
【发布时间】:2012-11-02 12:37:53
【问题描述】:

如何正确处理 php 站点的 nginx 配置中所有不存在的位置? 我可以找出 5 种可能的此类位置。

  1. 文件不正确:example.com/notexist.jpg

  2. 不正确的文件夹:example.com/notexist

  3. 嵌套不正确的文件夹:example.com/notexist1/notexist2/..../notexist10000

  4. (3) 和 (1) 的组合:example.com/notexist1/notexist2/..../notexist10000/not.exist.jpg

  5. 不存在的 php 文件:example.com/notexist.php

是否有涵盖所有这些情况的微小而强大的解决方案? 还需要避免检查任何文件和目录(使用 -d 和 -f),因为它会增加 CPU 和 IO 开销。

提前致谢!

【问题讨论】:

    标签: configuration web nginx


    【解决方案1】:

    try_files 为我彻底解决了问题

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

    在 not_found_page 中有绝对路径也很重要,否则页面布局会被破坏。

    【讨论】:

      【解决方案2】:

      在所有 5 种情况下,通常会返回 404,因此您可以通过以下方式添加对所有这些情况的特殊处理:

      1. 创建命名位置
      2. 将该命名位置称为您的 404 错误页面:

      这会产生:

      server {      
        error_page 404 = @errors;
      
        location @fallback {
          # do whatever you want to do on faulty reqeusts
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-02-01
        • 2018-04-15
        • 2013-10-17
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多