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

我有一个使用proxy_pass转发请求的NodeJS应用程序。 当NodeJS应用程序closures时,我想显示一个自定义的错误页面。 所以我把一个5xx.html文件放到/var/www/some-folder/errors并将错误转发给它。

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

现在根据nginx.conf (见下面),我假设如果我请求http://some.address.com/errors/5xx.html ,它通过location ^~ /errors/指令转发到/var/www/some-folder ,然后到/errors/5xx.html 。 但不是获取5xx.html页面,我得到默认的nginx 404 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; } 

您不能直接访问页面,因为您在configuration中指定不允许这样的请求。

  internal; 

查看nginx文档 :

指定给定位置只能用于内部请求。 对于外部请求,将返回客户端错误404(Not Found)。