gpt4 book ai didi

nginx 不服务我的 error_page

转载 作者:行者123 更新时间:2023-12-03 07:07:24 26 4
gpt4 key购买 nike

我有一个由 Unicorn 托管的 Sinatra 应用程序,前面有 nginx。当 Sinatra 应用程序出错(返回 500)时,我想提供静态页面,而不是默认的“内部服务器错误”。我有以下 nginx 配置:

server {
listen 80 default;
server_name *.example.com;
root /home/deploy/www-frontend/current/public;

location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_pass http://127.0.0.1:4701/;
}

error_page 500 502 503 504 /50x.html;
}

error_page 指令在那里,我已经 sudo'd 作为 www-data (Ubuntu) 并验证我可以 cat 该文件,因此这不是权限问题。使用上述配置文件和 service nginx reload,我收到的错误页面仍然是相同的“内部服务器错误”。

我的错误是什么?

最佳答案

error_page 处理 nginx 生成的错误。默认情况下,无论 http 状态码如何,nginx 都会返回代理服务器返回的任何内容。

您正在寻找的是 proxy_intercept_errors

This directive decides if nginx will intercept responses with HTTP status codes of 400 and higher.

By default all responses will be sent as-is from the proxied server.

If you set this to on then nginx will intercept status codes that are explicitly handled by an error_page directive. Responses with status codes that do not match an error_page directive will be sent as-is from the proxied server.

关于nginx 不服务我的 error_page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com