我目前有一个连接到域的数字海洋水滴。在服务器上,我正在运行NGINX并尝试将多个节点应用程序反向代理。目前,我的根目录在位置/。
有一个节点快速应用程序我正在尝试将另一个节点快速应用程序连接到另一个子目录。这是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;
答案 0 :(得分:1)
首先,如果您不需要,请不要使用正则表达式位置。使用简单的位置。关于你的问题 - 将/
放在proxy_pass URI的末尾。 Nginx会将/ newapp / xxx重写为/ xxx,反之亦然(例如,对于http重定向)。但是(!)不会重写HTML正文中的链接。
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;
}