【问题标题】:Nginx won't use custom 502 error pageNginx 不会使用自定义的 502 错误页面
【发布时间】:2016-07-17 03:19:14
【问题描述】:

我试图在后面的网络服务器(上游)离线时显示自定义 502 错误页面,但它不起作用:它继续显示默认的 502 错误页面(我确定上游已离线)。

我的文件组织如下:

  • 静态文件位于/var/web/example.org/www/res 下(例如:/var/web/example.org/www/res/robots.txt);
  • 错误页面位于/var/web/example.org/www 下(例如:/var/web/example.org/www/502.html)。这是因为我不希望在该网络服务器开启时访问错误页面(不是来自后面的网络服务器,包括 404 和其他)。

这是我的(匿名)配置:

upstream exampleorg {
        server 127.0.0.1:8087;
}
server {
    listen 80;
    server_name www.example.org;

    # content
    # - static
    root /var/web/example.org/www/res;

    # - main webserver
    error_page 403 404 @exampleorg;
    error_page 502 /../502.html;
    location @exampleorg {
        proxy_pass http://exampleorg;
        proxy_redirect off;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

我还尝试了以下方法来定义以下内容以捕获 502(在服务器块中,最后):

error_page 502 /502.html;
location /502.html {
    root /var/web/example.org/www;
    internal;
}

但是 nginx 继续显示默认的 502 页面(即使没有 internal;)。我应该怎么做 ?提前感谢您的解决方案:)

【问题讨论】:

    标签: nginx proxypass


    【解决方案1】:

    经过一番试验,找到了解决方案。我认为错误来自“error_page”404语句,我不认为try_files如此强大。无论如何,这是最终的配置,因为它可能对某些人有用:

    upstream exampleorg {
            server 127.0.0.1:8087;
    }
    server {
        listen 80;
        server_name www.example.org;
    
        # content
        # - static
        location / {
            root /var/web/example.org/www/res;
            try_files $uri @exampleorg;
        }
    
        # - main webserver
        location @exampleorg {
            proxy_pass http://exampleorg;
            proxy_redirect off;
    
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    
        # - error
        error_page 502 @offline;
        location @offline {
            root /var/web/example.org/www;
            try_files /502.html 502;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 2016-04-16
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2014-04-24
      相关资源
      最近更新 更多