nginx错误页面和内部指令不能按预期工作

我想设置我的nginx服务器返回HTTP 50x状态代码上的特定错误页面,我希望这个页面不能被用户的直接请求(例如http // mysite / internalerror)所不可用。

为此,我使用nginx的internal指令,但我必须丢失一些东西,因为当我把这个指令放在我的/internalerror位置时,nginx返回一个自定义的404错误(甚至不是我自己的404错误页面)页面崩溃。

所以,总结一下,看来会发生什么:

  1. 回家
  2. nginx将查询传递给Python
  3. 我正在模拟一个应用程序错误来获取502错误代码
  4. nginx尝试从其error_page规则返回/ InternalError
  5. 由于internal规则,它最终失败回到自定义404错误代码< – 为什么? 该文件说error_page指令不关心internal : http : error_page

下面是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位置使用“〜*”没有多less意义,简单的位置可以。

你得到404因为/ InternalError文件丢失。 你打算从uwsgi后端提出这样的请求吗?