You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

容器化Web应用NGINX反向代理静态资源404问题解决

解决Nginx反向代理UI服务静态资源404问题

问题根源

你的UI服务(如Nginx Proxy Manager、AKHQ)生成静态资源URL时,默认使用自身根路径(比如/css/、/ui/static/css/),但通过反向代理的子路径(如/nginxui/、/ui/)访问时,浏览器会直接向域名根路径请求这些资源,而当前Nginx配置仅代理了特定路由(如/nginxui/、/ui/login),未覆盖静态资源的请求路径,导致404错误。

修改后的Nginx配置

server {
    listen 443;
    server_name **NAME_HOST**;

    # 代理Nginx Proxy Manager(路径/nginxui/)
    location /nginxui/ {
        proxy_pass http://localhost:81/;
        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;
    }

    # 代理AKHQ应用(路径/ui/)
    location /ui/ {
        proxy_pass http://localhost:8080/ui/;
        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;
    }
}

关键修改说明

  • 匹配完整前缀路径:将原/ui/login改为/ui/,确保所有以该前缀开头的请求(包括静态资源)都能被代理;保留/nginxui/的前缀匹配,覆盖该路径下所有请求。
  • proxy_pass末尾加斜杠:proxy_pass末尾的斜杠会让Nginx自动把代理前缀后的路径拼接到目标URL后,比如请求/nginxui/css/main.css会被转发到http://localhost:81/css/main.css,刚好匹配服务的静态资源路径。
  • 移除冗余rewrite:原配置中的rewrite规则可直接删除,proxy_pass的路径映射已经能完成需求,避免规则冲突。

额外优化建议

如果你的UI服务支持配置base URL(比如Nginx Proxy Manager可在设置中指定根路径为/nginxui/,AKHQ可通过环境变量AKHQ_SERVER_BASE-URL=/ui/配置),建议同时修改服务的base URL,这样服务生成的静态资源URL会自动带上代理前缀,彻底避免路径匹配问题。

内容的提问来源于stack exchange,提问作者Rikissssss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:00:14