提问者:小点点

将Nginx与多个节点应用程序一起使用到同一服务器中


我正在尝试设置nginx conf,以便在同一个服务器上使用多节点应用程序。

我想使用:

http://localhost/node-app-01访问端口3001中的app-01

http://localhost/node-app-02在端口3002中访问app-02,依此类推。

但是它不起作用。错误为“< code > http://localhost/CSS/chunk-006 c7b 90.0199750 b . CSS net::ERR _ ABORTED 404(未找到)”。我可以看到这里没有端口。

如果我使用http://localhost:3001, http://localhost:3002 ... 一切都好。

如果我使用

我的文件夹应用结构:

\nginx
       \conf
       \html
       \logs
       ....


 \dev-folder    
   \dist
   |  index.html
   |  \css
   |    css files
   |  \js
   |    js files
   |
   |\node-app-01   /*run in localhost:3001*/
   |  \node_modules
   |     node module files
   |  \public
   |     public app files
   |  package.json
   |  app.js
   |  server.js
   
   |\node-app-02 /*run in localhost:3002*/
   |  \node_modules
   |     node module files
   |  \public
   |     public app files
   |  package.json
   |  app.js
   |  server.js
   
   |\node-app-03 /*run in localhost:3003*/
   |  \node_modules
   |     node module files
   |  \public
   |     public app files
   |  package.json
   |  app.js
   |  server.js

Nginx配置:

http {
    include       mime.types;
    default_type  application/octet-stream;
    ....

    server {
        listen       80;
        listen   [::]:80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #nginx original server from install
        location / {
            root   html;
            index  index.html index.htm;
        }
        
    
    
        location ^~ /node-app-01/  {
            rewrite ^/node-app-01/(.*)$ /$1 break;
            proxy_pass http://localhost:3001/;
        }

        location ^~ /node-app-02/ {
            rewrite ^/node-app-02/(.*)$ /$1 break;
            proxy_pass http://localhost:3002/;
        }
        
        location ^~ /node-app-03/ {
            rewrite ^/node-app-03/(.*)$ /$1 break;
            proxy_pass http://localhost:3003/;
        }
    }

//


共1个答案

匿名用户

你可以在你的nginx配置中定义上游,如果你有WebSocket,尝试使用ip_hash选项

看看HTTPS TLS配置中的示例:

upstream express_servers {
    ip_hash;
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
}
server {

listen 443 ssl;

server_name  mydomain.com;

error_log on;
ssl_certificate /home/test/ssl/fullchain.pem;
ssl_certificate_key /home/test/ssl/privkey.pem;
client_body_timeout 3m;
client_header_timeout 3m;
client_max_body_size 150m;
send_timeout 3m;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP


location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-NginX-Proxy true;
  proxy_ssl_session_reuse off;
  proxy_set_header Host $http_host;
  proxy_cache_bypass $http_upgrade;

  proxy_pass http://express_servers;
  proxy_redirect off;

  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}
}