因此,我使用 nginx 1.18.0 配置了反向代理。我已经能够通过反向代理访问我想要的网站,但某些请求失败(例如,对于网站图标),因为位置 /app3/ 未包含在请求 URL 中。我的配置文件中缺少哪个设置才能使其正常工作?为什么有些请求有效,而其他请求无效?
请注意,我无法控制目标应用程序。它与 nginx 托管在同一个本地网络上,但在不同的主机上。我无法在那里进行任何更改。
截图供参考:https://ibb.co/3WVfMH7
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name myservername;
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 Accept-Encoding "";
gzip_static off;
location /app3/ {
proxy_set_header Accept-Encoding "";
sub_filter 'href="/' 'href="/app3/';
sub_filter 'src="/' 'src="/app3/';
sub_filter 'action="/' 'action="/app3/';
sub_filter_once off;
proxy_pass http://172.31.1.102/;
}
}
答案1
页面中的 URL 由应用程序创建。因此,您需要配置应用程序,以便它生成正确的 URL。
应用程序通常具有可针对这些情况配置的根 URL。
答案2
您可以favicon.ico
通过在 nginx 配置中添加以下行来阻止请求:
location = /favicon.ico{ access_log off; log_not_found off; }
您还可以将以下行添加到文件<head>
的部分index.html
:
<link rel="shortcut icon" href="data:,">
看起来 app3 没有任何favicon.ico
。