nginx 反向代理对某些 HTTP 请求返回 404(但不是全部)

nginx 反向代理对某些 HTTP 请求返回 404(但不是全部)

因此,我使用 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

相关内容