node.js-NGINX:使用域/路径在同一服务器上的多个节点js应用程序

问题

如果我有一些节点js应用程序,并且想将其发布为mydomain.com/app1、mydomain.com/app2等,则必须将app.get’/’更改为app.get(‘/ app1’,也可以在在某些情况下,css,js和图像路径.

要分配域/路径时,是否应该始终修改应用程序?

有什么方法可以使应用程序独立吗?

是nodejs还是Nginx配置?

这是一个用作示例的节点js应用程序:

@L_404_0@

这是mydomain.com的节点js应用程序的Nginx配置(有效!)

server {
  listen 80;
  server_name mydomain.com;

  location / {
    proxy_pass http://localhost:8080/;
  }
}

节点应用:

app.get('/',function(req,res) {
    // ejs render automatically looks in the views folder
    res.render('index');
});

这是我针对同一节点js应用但mydomain.com/app1的Nginx配置(有效!)

server {
  listen 80;
  server_name mydomain.com;

  location /app1/ { 
    proxy_pass http://localhost:8080/app1/; 
  }
}

这是Node js应用程序中的修复

app.get('/app1',res) {
    // ejs render automatically looks in the views folder
    res.render('index');
});

我试过了 :

https://github.com/expressjs/express-namespace

http://expressjs.com/en/4x/api.html

但是在两种情况下,我都需要更改节点js应用程序.

提前致谢.

最佳答案

Should you always modify the application when you want to assign a domain/path?

不,您根本不需要修改应用程序.

当以这种方式使用proxy_pass时,您需要使用正则表达式重写URL.尝试这样的事情:

  location ~ ^/app1/(.*)${ 
    proxy_pass http://localhost:8080/$1$is_args$args; 
  }

另请参阅:https://serverfault.com/q/562756/52951

相关文章

一、Linux下Nginx的安装 1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使...
一、空格:默认匹配、普通匹配 location / { root /home; } 二、= :精确匹配(表示匹配到 /home/resou...
``` nginx -c 配置文件路径 ``` ``` /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con...
前言 nginx可所谓是如今最好用的软件级别的负载均衡了。通过nginx的高性能,并发能力强,占用内存下的特...
1.ngnix概念 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄...
博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性...