我目前有一个节点/角度应用程序,当直接指向配置的端口时,按预期运行(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;
}
}
但是,只要我将位置更改为/ subfolder,我的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');
或return $http.post('/subfolder', {data: data});
。
并且,在我的节点应用程序中,我的路由定义为app.get('/subfolder', somefunction);
或app.post('/subfolder', somefunction);
同样,当我从域的根目录运行应用程序时,它工作正常。但是,当我将其配置为位于域的子文件夹中时,请求将不再起作用。
我的最终目标是让多个节点应用程序从主域的子文件夹运行。我已经和它斗争了一段时间,并且发现了一些用于在单个服务器上托管多个节点应用程序的文章,但它们似乎面向拥有单独的域。我希望(如果可能的话)将这些作为同一域的单独应用程序运行。
任何想法/技巧/指针?谢谢!
答案 0 :(得分:2)
将您的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它适用于我