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

Nginx配置Meteor服务器动态子域名代理时出现404错误求助

问题根源排查

你遇到的JS文件404问题,核心原因是Meteor的静态资源(比如框架JS、样式文件)都是从网站根路径(/)加载的,但你当前的Nginx配置把所有请求都转发到了Meteor的/booking/子路径下。举个例子:当浏览器请求your-sub.domain.com/meteor_runtime_config.js时,Nginx会把它转发到localhost:3000/booking/meteor_runtime_config.js,但这个文件实际在Meteor的根目录(localhost:3000/meteor_runtime_config.js),所以就返回404了。

修复后的Nginx配置

你需要拆分代理规则,区分页面路由请求和静态资源请求,让静态资源直接走Meteor的根路径,页面路由才转发到/booking/。下面是调整后的完整配置:

# 先定义WebSocket的升级规则(放在server块外面,全局生效)
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    server_name *.domain.com;
    listen 80;

    # 处理Meteor的静态资源请求:直接代理到根路径
    location ~* ^/(meteor|packages|.*\.(js|css|png|jpg|svg|ico|woff2))$ {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }

    # 处理页面路由:转发到/booking/路径
    location / {
        proxy_pass http://localhost:3000/booking/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        # 修正Meteor返回的跳转路径,避免出现/booking/重复的问题
        proxy_redirect http://localhost:3000/booking/ /;
    }
}
关键细节说明
  • 静态资源的匹配规则~* ^/(meteor|packages|.*\.(js|css|png|jpg|svg|ico|woff2))$覆盖了Meteor常用的静态资源目录和文件类型,确保这些请求不会被转发到/booking/
  • proxy_redirect指令是为了避免Meteor返回的页面中出现/booking/重复的路径(比如跳转链接变成/booking/booking/some-page)
  • WebSocket的map配置建议放在全局(和server块同级),这样所有需要WebSocket支持的server配置都能复用

修改完配置后,执行nginx -s reload重启Nginx,再访问子域名应该就能正常加载JS文件和/booking/页面了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:19:46