![带有 Unicorn 的 Nginx 自定义 502 错误页面不起作用,让我抓狂 ;)](https://linux22.com/image/795749/%E5%B8%A6%E6%9C%89%20Unicorn%20%E7%9A%84%20Nginx%20%E8%87%AA%E5%AE%9A%E4%B9%89%20502%20%E9%94%99%E8%AF%AF%E9%A1%B5%E9%9D%A2%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%8C%E8%AE%A9%E6%88%91%E6%8A%93%E7%8B%82%20%3B).png)
我尝试了好几次,尝试修复下面使用 unicorn 的 nginx 代码,但就是不起作用。所以现在在最后一份报告中发布,一些更有才华的人可以看到我的错误,其他人也可以从中受益。
我在用着:
- nginx
- 独角兽
问题是
- 没有显示 502 错误(我使用 cap deploy:web:disable 任务来编写 Maintenance.html)
- 如果 nginx 正在运行但 unicorn 没有运行,我也会收到 502 错误页面
nginx 配置:
upstream unicorn {
server unix:/srv/books/shared/tmp/unicorn.sock fail_timeout=0;
}
server {
listen 80 deferred;
server_name books.*;
client_max_body_size 4G;
keepalive_timeout 10;
server_tokens off;
root /srv/books/public;
location / {
try_files /system/maintenance.html $uri/index.html $uri @unicorn;
}
try_files $uri/index.html $uri @unicorn;
location @unicorn {
error_page 502 /system/maintenance.html;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
}
}
答案1
将error_page
指令放在 下server
,而不是 下location
。