0
我试图托管通过Nginx代理的多个Node JS服务器,它正常工作。一台服务器托管在'/'上,另一台服务器托管在例如'/ one'上。下面是相关的Nginx配置。使用Nginx和多个NodeJS应用程序维护结构
upstream host_com { server 127.0.0.1:3000; keepalive 8; } upstream one_host_com { server 127.0.0.1:3010; keepalive 8; } server { listen 80; access_log /var/log/nginx/host.log; location/{ proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://host_com/; proxy_redirect off; } location /one { rewrite ^(/one)+/(.*)$ /$2 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $proxy_host; #$http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://one_host_com/; proxy_redirect off; }
}
然而,当我做一个AJAX调用从 '/一个' 测试平台,象下面这样:
$ .getJSON( '/ get_stuff',函数(data){..});
当我希望它转到'/ one/get_stuff'时,该帖子转到'/ get_stuff'。我怎样才能让Nginx指向NodeJS,但仍然保持该位置?有没有更好的方法来实现这一点?
如果没有斜杠,请按照您的要求运行调用,仍然将请求URL设置为“http://(ip)/ get_stuff”,但仍未调用“one”测试平台。 – 2014-12-02 17:24:39
经过一些修补之后,我发现你的步骤确实有帮助,但我还需要在HTML中设置基础, '。一旦完成相对URL的AJAX工作,只要我在Nginx配置中重写。 –
2014-12-02 18:16:34
更多解释;设置基地实际上并非必要。问题是我正在访问'http://(ip)/ one'而没有结尾的斜杠。随着斜线,相对网址工作正常。看起来我只需要在我的Nginx配置中捕捉到它。 – 2014-12-02 18:25:41