我目前有一个数字海洋水滴连接到一个域。在服务器上,我正在运行NGINX,并试图反向代理多个节点应用程序到它。目前,我的根目录有一个node express应用程序,位置/。
我正在尝试将另一个node express应用程序连接到另一个子目录。下面是nginx配置文件:
server {
listen 80;
server_name servername.com;
# my root app
location / {
proxy_pass http://127.0.0.1:6001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# new app
location ~^ /newapp {
proxy_pass http://127.0.0.1:6002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
字符串
问题是,新应用程序试图从/newapp中提供文件,这是破坏。我想这可能是我的app.js文件中的东西,可以在新应用程序中使用Express,将基本目录设置为/newapp/ -以提供静态文件和路由。如何做到这一点?
在newapp中,我提供静态文件如下:
// Serve files out of ./public
app.use(express.static(__dirname + '/public'));
型
并将路由文件设置为:
var index = require('./routes/index');
app.use('/', index);
型
索引路由文件:
var express = require('express');
var router = express.Router();
// Get index page
router.get('/', function(req, res, next) {
res.render('index', {
index : 'active'
});
});
module.exports = router;
型
2条答案
按热度按时间bqujaahr1#
首先,如果你不需要,不要使用regexp location。使用简单的location。关于你的问题-将
/
放在proxy_pass URI的末尾。Nginx会将/newapp/xxx重写为/xxx,反之亦然(例如,对于http重定向)。但是(!)不会重写HTML主体中的链接。字符串
42fyovps2#
我也遇到过同样的问题:子目录中有NGINX的多个节点应用程序。我使用了下面的代码。它工作正常。
字符串