nginx - 为什么我不能直接访问我的错误页面?

nginx - 为什么我不能直接访问我的错误页面?

我有一个 NodeJS 应用程序,我使用 向其转发请求proxy_pass。当 NodeJS 应用程序关闭时,我想显示自定义错误页面。因此,我将一个5xx.html文件放入其中/var/www/some-folder/errors并将错误转发给它。

现在,当我尝试http://some.address.com在 NodeJS 服务器关闭时访问时,502会出现错误,但 nginx 会正确返回5xx.html页面。

现在根据nginx.conf(见下文),我假设如果我请求http://some.address.com/errors/5xx.html,它会通过location ^~ /errors/指令转发到,/var/www/some-folder然后转发到/errors/5xx.html。但是我没有得到页面,而是5xx.html得到了默认的 nginx404 Not Found页面。

为什么我不能5xx.html直接访问该页面?谢谢。

nginx.conf

server {
   server_name some.address.com;

   location / {
       // some settings
       proxy_pass http://127.0.0.1:8084/;
   }

   location ^~ /errors/ {
       internal;
       root /var/www/some-folder;
   }

   error_page 502 503 504 505 /errors/5xx.html;

}

答案1

您无法直接访问该页面,因为您在配置中指定不允许此类请求。

        internal;

查看nginx 文档

指定给定位置仅可用于内部请求。对于外部请求,将返回客户端错误 404(未找到)。

相关内容