首页 > 解决方案 > Nginx 提供静态中断页面但不显示图像 - 他们 502

问题描述

我目前有一个 Web 应用程序在 Tomcat 的 8081 端口上运行,并且我有 nginx 在端口 8080 上侦听(iptables 路由 80 到 8080),如下所示。
我正在尝试配置在 Tomcat 因任何原因崩溃时显示的中断页面。

server {
        listen      8080;
        server_name my.url.com.au;
        port_in_redirect off;
        root    /var/www/app/;

        location / {
            proxy_pass http://my.url.com.au:8081; #not 127.0.0.1 due to Tomcat aliases
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout 150;
            proxy_send_timeout 100;
            proxy_read_timeout 100;
            proxy_buffers 4 32k;
            client_max_body_size 8m;
            client_body_buffer_size 128k;
        }

        error_page 501 502 503 /TemporaryOutage.html;
        location = /TemporaryOutage.html {
            root /etc/nginx/outage-page/;
        }
}
#there is also another server to handle https configured in a similar fashion.

当我关闭 Tomcat 进行测试时,我将 TemporaryOutage.html 页面显示为 exepcted,但有两个嵌入了以下语法的图像未显示。

src="/Logo.JPG"

检查 ngingx 访问日志,这两个图像都是从我的网络应用程序访问的,并返回 502 错误:

xx.xx.xx.xx - site [16/Aug/2018:16:33:34 +1000] "GET /Logo.JPG HTTP/1.1" 502 2175 "https://my.url.com.au/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
xx.xx.xx.xx - site [16/Aug/2018:16:33:34 +1000] "GET /Service.png HTTP/1.1" 502 2175 "https://my.url.com.au/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
xx.xx.xx.xx - site [16/Aug/2018:16:33:34 +1000] "GET /favicon.ico HTTP/1.1" 502 2175 "https://my.url.com.au/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"

有没有办法让该中断页面以静态方式为这些图像提供服务,而无需在应用程序关闭时直接访问应用程序?

标签: tomcatnginx

解决方案


在发布问题后,我尝试了更多配置并找到了可行的配置。
事实证明,我必须单独包含图像位置并根据需要提供它们。

    location = /Service.png {
        root /etc/nginx/outage-page/;
    }
    location = /Logo.JPG {
        root /etc/nginx/outage-page/;
    }
    location = /favicon.ico {
        root /etc/nginx/outage-page/;
    }

推荐阅读