/

用於從子文件夾中提供多個Node.js應用程序的簡單nginx反向代理

用於從子文件夾中提供多個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;
}

我使用下面的命令檢查配置是否正確:

1
sudo nginx -t

然後重新啟動nginx:

1
sudo systemctl restart nginx

tags: [“nginx”, “Node.js”, “reverse proxy”, “subfolder”, “configuration”]