我计划在一个子域下使用 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/