Aub*_*ner 9 nginx proxy custom-errors
以下是 Nginx 服务器配置示例。如果没有“魔法护身符”位置块,代理的错误内容会导致 Nginx 404 页面,而不是提供自定义的错误页面。
删除 proxy_intercept_errors 指令会提供带有正确 http 错误代码标头的正确代理错误页面。
无论魔法护身符是否存在,非代理错误页面都会正确呈现。
关于究竟发生了什么的任何想法?
server {
server_name mydomain.com "";
listen 80;
root /var/www;
error_page 400 401 402 403 404 500 501 502 503 504 /admin/error_page.htm;
proxy_intercept_errors on;
location /proxy/ {
proxy_read_timeout 60s;
proxy_set_header Host $host;
proxy_pass http://myservers;
}
location /test404/ {
return 404;
}
location /admin/ { # this line constitute a magical talisman that fixes proxied error interception(???)(!)
rewrite ^(/admin)(.*)$ /admin$2 break;
}
}
Run Code Online (Sandbox Code Playgroud)
很抱歉,这个答案迟到了,但到目前为止,使用当前的 v1.8.1 稳定版本,您提供的配置应该可以在没有任何护身符的情况下工作。
如果您提供了您正在试验的版本,那么查看错误是否已得到纠正或配置是否有缺陷将是一个想法。
我建议你仔细检查你的配置,因为你绝对不需要这个/admin/位置或其包含的rewrite指令。在删除不属于此测试的所有内容(并且您没有显示)时要特别小心,因为它可能会干扰。
作为最后的手段,您可以尝试以下操作,成功测试,配置片段,然后慢慢集成更改,看看结果与预期不同:
server {
listen 80;
listen [::]:80;
server_name example.org;
location /proxy {
return 418 "Host: $host, Connection: $http_connection";
}
}
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/ious/files;
error_page 418 = /error_page.html;
proxy_intercept_errors on;
location /proxy {
proxy_pass http://example.org;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17664 次 |
| 最近记录: |