[英]Configuring pm2 for cluster mode with express and nginx?
我們正在使用 pm2 設置基於 express 的 Node.JS 應用程序。
我們感到困惑的是,pm2 應用程序的每個實例是否需要在自己的端口上運行,然后配置 nginx 來處理每個實例的負載均衡?
另外,我們如何告訴 pm2 為每個實例使用單獨的日志文件?
我們的pm2配置:
{
"apps": [{
"name": "myapp",
"script": "dist/index.js",
"args": ["server"],
"watch": false,
"merge_logs": true,
"error_file": "/var/log/myapp/stderr-web.log",
"out_file": "/var/log/myapp/stdout-web.log",
"pid_file": "/var/run/myapp/myapp.pid",
"instance_var": "NODE_INSTANCE_ID",
"env": {
"LOGGING_MAIN_FILENAME": "main-web-%DATE%.log",
"LOGGING_MAIN_SYMLINK_NAME": "main-web.log",
"ENV": "dev",
"NODE_ENV": "development",
"DOTENV_CONFIG_PATH": "/home/myapp-user/.myapp-server-env",
"SERVER_BASE_URL": "http://localhost:3000"
}
}]
}
我們的 nginx 配置的位置部分:
location /api {
root /var/www/sites/myapp.mydomain.com-api;
proxy_pass http://localhost:300;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_set_header x-forwarded-host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
}
PM2 具有內置的負載均衡,因此如果應用程序在集群模式下運行,它將允許在所有實例上使用相同的端口。 Nginx 將以循環方式解析每個請求的實例
此行為也記錄在 Node.js 集群模式文檔https://nodejs.org/api/cluster.html#cluster_how_it_works
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.