我计划在一个子域下使用 express 运行 2 个 Node 应用程序,nginx 为静态文件提供服务。在我使用的两个 Node 应用程序中:

app.use(express.static(path.join(__dirname)));

我有以下 nginx 配置:
server {
    listen 80;
    server_name sub.domain.com;
    index index.html;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

    location / {
        proxy_pass http://localhost:232;
    }

    location ~ ^/(dist/|img/|app/|css/) {
        root /var/www/app/main/;
    }


    location /admin {
        proxy_pass http://localhost:233;
        rewrite ^/admin /$1 break;
    }

    location ~ ^/admin/(dist/|img/|app/|css/) {
        root /var/www/app/admin/;
        access_log off;
        expires max;
    }
}

有了这个设置,一切都非常适合“主”应用程序(在 sub.domain.com 上访问),但对于“管理”应用程序(sub.domain.com/admin),提供与“主”应用程序相同的静态文件应用程序。我应该如何修改我的设置以实现正确的行为?

最佳答案

使用您的开发工具检查以确保静态 Assets 正在尝试从正确的 URL 加载;即 http://sub.domain.com/admin/css//admin/css/ 等。有可能路径是相对于它们的项目根生成的并显示为 /css/ ,因此当浏览器尝试检索它们时,它会转到 http://sub.domain.com/css/

关于node.js - 具有多个位置的 Node 和 express + nginx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29905038/

10-09 07:07
查看更多