我正在尝试在nginx后面设置2个节点/快速站点。我想我已经尝试过在论坛中找到的所有可能的解决方案,但它们只对我有用。
我想要达到的目的是: - 一个域有2个节点/快递应用程序 1.)node.dev/site3 2.)node.dev/site4
这对主索引文件一切正常,但是选择任何按钮/路由我都会收到404错误。
这是nginx设置:
server {
listen 80;
root /var/www/node.dev;
server_name node.dev;
index index.htm index.html;
access_log /var/log/nginx/node;
charset utf8;
sendfile off;
location /site3/ {
proxy_pass http://0.0.0.0:8088/;
#rewrite ^/site3/(.*)$ /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
location /site4/ {
proxy_pass http://0.0.0.0:8080;
#rewrite ^/site4/(.*)$ /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
这是我的快速路线设置:
var express = require('express');
module.exports = function(app) {
var router = express.Router();
router.get('/ping', function(req, res){
res.send("pong!", 200);
});
router.get('/walk/:walk_name', function(req, res, next) {
res.send("walk!", 200);
});
router.get('/walk', function(req, res, next) {
res.send("No walker!", 200);
});
router.get('*', function(req, res) {
res.sendfile('./public/index.html'); // load the single view file (angular will handle the page changes on the front-end)
});
app.use('/', router);
}
使用//node.dev/site3访问该站点会按预期返回索引文件,但是例如单击WALK,它应该返回//node.dev/site3/walk,而是返回http://node.dev/walk并且有404错误。
我无法对节点/快递应用进行任何更改。有没有办法用nginx配置来实现这个目的。
请帮忙。提前谢谢。
答案 0 :(得分:0)
尝试将proxy_pass
设置为127.0.0.1而不是0.0.0.0。前者表示“localhost”,后者表示“任何主机”。虽然您可能会听“任何IP”,但您希望连接到/ specific / IP。
可能还有其他问题,但这可能有所帮助。