node.js – Nginx,Node,Angular – 子文件夹API / URL配置

我目前有一个节点/角度应用程序,当直接指向配置的端口时,它按预期运行(8081用于解释我的情况).我可以按预期发布,获取,放置,删除.

我的目标是让节点应用程序在mydomain.com/subfolder上运行.当nginx配置位置为“/”时,一切都按预期工作.配置如下:

upstream app_yourdomain {
    server 127.0.0.1:8081;
}

server {
    listen 0.0.0.0:80;
    server_name yourdomain.com yourdomain;
    access_log /var/log/nginx/yourdomain.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://app_yourdomain/;
      proxy_redirect off;
    }
}

但是,只要我将位置更改为/子文件夹,我的get,post,put,delete请求就会返回404响应.但是返回了在节点应用程序中配置的index.html.配置如下:

upstream app_yourdomain {
    server 127.0.0.1:8081;
}

server {
    listen 0.0.0.0:80;
    server_name yourdomain.com yourdomain;
    access_log /var/log/nginx/yourdomain.log;

    location /subfolder {
      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://app_yourdomain/;
      proxy_redirect off;
    }
}

在我的角度工厂中,我的请求结构如return $http.get(‘/ subfolder’);或者返回$http.post(‘/ subfolder’,{data:data});.

并且,在我的节点应用程序中,我的路由定义为app.get(‘/ subfolder’,somefunction);或app.post(‘/ subfolder’,somefunction);

再次,当我从域的根运行应用程序时,它工作正常.但是,当我将其配置为位于域的子文件夹中时,请求将不再起作用.

我的最终目标是让多个节点应用程序从主域的子文件夹运行.我已经和它斗争了一段时间,并且发现了一些用于在单个服务器上托管多个节点应用程序的文章,但它们似乎面向拥有单独的域.我希望(如果可能的话)将这些作为同一域的单独应用程序运行.

任何想法/技巧/指针?谢谢!

最佳答案 将您的Nginx文件修改为如下所示:

 upstream node{
        server  127.0.0.1:3000;
    }

listen 0.0.0.0:80;
server_name yourdomain.com yourdomain;
access_log /var/log/nginx/yourdomain.log;

location /node {
      rewrite /node(.*) $1 break;
      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://node;
      proxy_redirect http://node/ /node;
}

我从这里得到了上述内容:http://skovalyov.blogspot.com/2012/07/deploy-multiple-node-applications-on.html,它对我有用

点赞