Nginx处理错误的位置

时间:2012-11-02 12:37:53

标签: configuration web nginx

如何正确处理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

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

    提前致谢!

2 个答案:

答案 0 :(得分:1)

try_files 完全解决了我的问题

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

在not_found_page中使用绝对路径也是非常重要的,否则页面布局会被破坏。

答案 1 :(得分:0)

在所有5个案例中,通常会返回404,因此您可以通过以下方式添加对所有案例的特殊处理:

  1. 创建命名位置
  2. 将该命名位置称为404错误页面:
  3. 会产生:

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