nginx错误页面和内部指令无法按预期工作

我想设置我的nginx服务器以返回HTTP 50x状态代码的特定错误页面,并且我希望用户的直接请求(例如,http // mysite / internalerror)使该页面不可用.

为此,我正在使用nginx的内部指令,但我必须遗漏一些东西,因为当我将该指令放在my / internalerror位置时,nginx返回一个自定义404错误(这甚至不是我自己的404错误页面)页面崩溃.

总而言之,这里似乎发生了什么:

> GET / Home
> nginx将查询传递给Python
>我正在模拟应用程序错误以获取502错误代码
> nginx尝试从其error_page规则返回/ InternalError
>由于内部规则,它最终会回复到自定义404错误代码< - 为什么?文档说error_page指令不关注内部:http://wiki.nginx.org/HttpCoreModule#internal

这是来自nginx.conf的摘录,其中有一些注释要指出:

error_page  404 /NotFound;
error_page  500 502 503 504 =500 /InternalError; # HTTP 500 Error page declaration

location / {
    try_files /Maintenance.html $uri @pythonbackend;
}

location @pythonbackend {
    include uwsgi_params;
    uwsgi_pass unix:///tmp/uwsgi.sock;
}

location ~* \.(py|pyc)${ # This internal location works OK and returns my own 404 error page
    internal;
}

location /__Maintenance.html { # This one also works fine
    internal;
}

location ~* /internalerror { # This one doesn't work and returns nginx's 404 error page when I trigger an error somewhere on my site
    internal;
}

非常感谢您的帮助!!

最佳答案
使用“〜*”作为/ internalerror位置没有多大意义,普通位置会这样做.

你得到404因为/ InternalError文件丢失了.您是否打算从uwsgi后端提出此类请求?

转载注明原文:nginx错误页面和内部指令无法按预期工作 - 代码日志