tomcat - 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" "-"
有没有办法让该中断页面以静态方式为这些图像提供服务,而无需在应用程序关闭时直接访问应用程序?
解决方案
在发布问题后,我尝试了更多配置并找到了可行的配置。
事实证明,我必须单独包含图像位置并根据需要提供它们。
location = /Service.png {
root /etc/nginx/outage-page/;
}
location = /Logo.JPG {
root /etc/nginx/outage-page/;
}
location = /favicon.ico {
root /etc/nginx/outage-page/;
}
推荐阅读
- javascript - 我想在 vue 中创建一个激活/停用按钮
- javascript - 如何在javascript中从函数外部访问和更改变量
- node.js - 寻求使用 Heroku 和 Node.js 调度任务的建议
- c# - DateAdd 和 DatePart 从 VB6 到 C#
- typescript - 如何验证被调用了多少次间谍对象的方法
- android - ACCESS_COARSE_LOCATION android 权限问题
- django - 收到错误 -> 'NoneType' 对象没有属性 'delete'
- python - 如何匹配和替换特定单词之后的所有内容,直到它到达使用python的字符串列表中的逗号?
- oracle - 如何使用对象作为输出来执行存储过程
- json - 在 powershell 中添加子字符串