使用Nginx和多个NodeJS应用程序维护结构

时间:2014-12-01 19:24:31

标签: ajax node.js nginx

我正在尝试托管通过Nginx代理的多个Node JS服务器,它正常工作。一个服务器托管在'/',另一个服务器托管在,例如'/ one'。此设置的相关Nginx配置如下所示。

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;
  }
     

}

然而,当我从'/ one'测试平台进行AJAX调用时,如下所示:

  

$。getJSON('/ get_stuff',function(data){..});

当我希望它转到'/ one / get_stuff'时,帖子会转到'/ get_stuff'。如何让Nginx指向NodeJS,但仍然保持位置?有没有更好的方法来实现这个?

1 个答案:

答案 0 :(得分:0)

尝试删除JavaScript中的前导斜杠,例如: $.getJSON( 'get_stuff', function(data) { .. });。通过包含前导斜杠,您要求在域的根目录中建立路径,但我认为您希望路径相对于您当前所在的URL。