http 状态代码 404 - 无法使用 nginx 在龙卷风中制作 404 页面



我试图为龙卷风制作自定义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;

就这样。

最新更新