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

Nginx反向代理Tomcat后无法加载JS/CSS问题求助

解决建议

排查方向1:静态资源路径冲突

你的Nginx配置将域名根路径/代理到了后端的/context/,但如果后端应用生成的静态资源是带/context前缀的绝对路径(比如页面中引用/context/js/app.js),浏览器会向http://sub.domain.com/context/js/app.js发送请求,此时Nginx会将该请求转发到http://127.0.0.1:8080/context//context/js/app.js(路径重复),导致资源找不到。

修复方案1:调整Nginx配置,兼容/context路径的请求

在443端口的server块中添加一个专门匹配/context/的location规则,避免路径重复拼接:

server {
    listen    443    ssl http2;
    server_name sub.domain.com;

    ssl_certificate     /var/certs/sub.domain.com.cert;
    ssl_certificate_key /var/certs/sub.domain.com.pkey;
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers off;

    # 处理带/context前缀的静态资源请求
    location /context/ {
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme; # 告诉后端当前协议

        proxy_pass http://127.0.0.1:8080; # 末尾不带斜杠,保留原请求路径
    }

    # 处理根路径的页面请求
    location / {
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme; # 告诉后端当前协议

        proxy_pass http://127.0.0.1:8080/context/;
    }
}

修复方案2:修改应用的静态资源路径

如果可以修改应用代码,将静态资源的引用改为相对路径(比如js/app.js而非/context/js/app.js),或者直接使用根路径(/js/app.js),这样浏览器会向http://sub.domain.com/js/app.js发送请求,Nginx会自动转发到http://127.0.0.1:8080/context/js/app.js,匹配后端实际资源路径。

排查方向2:HTTPS混合内容问题

如果浏览器控制台提示“混合内容”错误,说明应用中仍有静态资源使用http协议引用,而当前域名是https,浏览器会阻止这类资源加载。

修复方案:

在Nginx配置中添加X-Forwarded-Proto头(已在上面的配置中包含),让后端应用感知当前使用的是https协议,自动生成https开头的资源链接。

验证步骤

修改配置后,执行以下命令重启Nginx生效:

sudo nginx -t && sudo systemctl restart nginx

打开浏览器控制台(F12),查看网络请求,确认JS/CSS的请求路径和返回状态码是否正常(200)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:13:11