最近我在DigitalOcean上設置了一個VPS,以在同一域名下運行幾個不同的Node.js腳本。
現在,您無法使兩個不同的Node.js應用程序監聽同一個端口,因此必須使用反向代理。常用的方法是使用Nginx。
我將每個Node應用程序設置為在自己的子文件夾中運行,所以我需要編輯Nginx配置:
sudo nano /etc/nginx/sites-available/default
配置文件原始內容如下:
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應用程序,並添加了以下配置:
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;
}
我使用下面的命令檢查配置是否正確:
sudo nginx -t
然後重新啟動nginx:
sudo systemctl restart nginx