我试图为龙卷风制作自定义404页面,并希望使用nginx部署它,但失败了。
这是我的域名.conf(由nginx.conf包含)
server {
listen 80;
server_name vm.tuzii.me;
client_max_body_size 50M;
location ^~ /app/static/ {
root ~/dev_blog;
if ($query_string) {
expires max;
}
}
location = /favicon.ico {
rewrite (.*) /static/favicon.ico;
}
location = /robots.txt {
rewrite (.*) /static/robots.txt;
}
error_page 404 /404.html;
location /404.html {
root /home/scenk;
internal;
}
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_pass http://frontends;
}
}
但是重新加载nginx后,什么也没发生。似乎龙卷风在nginx之前抓住了404错误。我不知道解决这个问题。
附言。我只想通过nginx制作404error。但不要重写龙卷风源中的"write_error"。
Environment: Ubtuntu 12.04 Tornado2.4.1 runsite with supervisor by Nginx 4 process.
我遇到了同样的问题,你真正需要的是这组:
proxy_intercept_errors;
来自nginx代理模块文档:
proxy_intercept_errors
语法:proxy_intercept_errors开 | 关
默认值:关闭
上下文:http
此指令决定 nginx 是否会拦截 HTTP 状态代码为 400 或更高的响应。
默认情况下,所有响应都将按原样从代理服务器发送。
如果将其设置为 on,则 nginx 将截获由 error_page 指令显式处理的状态代码。状态代码与error_page指令不匹配的响应将从代理服务器按原样发送。
Finailly 解决了这个问题。因为
proxy_pass_header Server;
所以真正的龙卷风服务器被发送了。要隐藏真实服务器,只需更改
proxy_pass_header User-Agent;
就这样。