用於從子文件夾中提供多個Node.js應用程序的簡單nginx反向代理
最近我在DigitalOcean上設置了一個VPS,以在同一域名下運行幾個不同的Node.js腳本。
現在,您無法使兩個不同的Node.js應用程序監聽同一個端口,因此必須使用反向代理。常用的方法是使用Nginx。
我將每個Node應用程序設置為在自己的子文件夾中運行,所以我需要編輯Nginx配置:
1
| sudo nano /etc/nginx/sites-available/default
|
配置文件原始內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| server { listen 80 default\_server; listen [::]:80 default\_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server\_name hellonode;
location ^~ /assets/ { gzip\_static on; expires 12h; add\_header Cache-Control public; }
location / { proxy\_http\_version 1.1; proxy\_cache\_bypass $http\_upgrade;
proxy\_set\_header Upgrade $http\_upgrade; proxy\_set\_header Connection 'upgrade'; proxy\_set\_header Host $host; 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\_pass http://localhost:3000; } }
|
這個配置允許一個Node.js應用程序在端口3000上運行,並且是主要在/
處提供服務的應用程序。
我希望在/myservice
下運行一個應用程序,所以我創建了一個在端口3001上監聽的Node應用程序,並添加了以下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| location /myservice { rewrite ^/myservice/(.\*)$ /$1 break;
proxy\_http\_version 1.1; proxy\_cache\_bypass $http\_upgrade;
proxy\_set\_header Upgrade $http\_upgrade; proxy\_set\_header Connection 'upgrade'; proxy\_set\_header Host $host; 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\_pass http://localhost:3001; }
|
我使用下面的命令檢查配置是否正確:
然後重新啟動nginx:
1
| sudo systemctl restart nginx
|
tags: [“nginx”, “Node.js”, “reverse proxy”, “subfolder”, “configuration”]