我目前有一个节点/角度应用程序,当直接指向配置的端口时,它按预期运行(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,它对我有用