我在AWS EC2实例(Ubuntu 14.04)上安装了Parse Server和Parse Dashboard。我使用pm2进程管理器来配置和运行应用程序和nginx作为代理服务器。
两个应用程序都运行正常,我可以从客户端访问它们。但问题是,当我访问Parse Dashboard(内部执行对本地Parse Server的调用)时,大多数POST命令都会返回502 Bad Gateway错误。
经过一些调查后我怀疑pm2是问题,因为它会在一段时间后继续重启应用程序,因为所有的POST命令都是同时执行的。我将max_memory_restart参数设置为500M并杀死了&重新启动的应用程序,但没有区别。
我必须提到我第一次使用pm2。所以我配置了pm2错误或者我错过了什么? pm2错误日志为空。
Nginx错误日志显示以下内容:
2016/08/12 08:39:56 [错误] 7792#0:* 23连接()失败(111:连接被拒绝)连接上游时,客户端:xxx,服务器:xxx,请求:&#34 ; POST / parse / classes / AccountingDrawer HTTP / 1.1",upstream:" http://127.0.0.1:1337/parse/classes/AccountingDrawer",host:" xxx",referrer:" { {3}}"
Nginx默认配置
server {
listen 443;
server_name xxx;
root /usr/share/nginx/html;
index index.html index.htm;
# log files
access_log /var/log/nginx/parse.access.log;
error_log /var/log/nginx/parse.error.log;
ssl on;
# Use certificate and key provided by Let's Encrypt:
ssl_certificate /etc/letsencrypt/live/xxx/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
# Pass requests for /parse/ to Parse Server instance at localhost:1337
location /parse/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:1337/parse/;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_redirect off;
}
# Pass requests for /dashboard/ to Parse Dashboard instance at localhost:4040
location /dashboard/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:4040/dashboard/;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_redirect off;
}
location / {
try_files $uri $uri/ =404;
}
}
pm2 ecosystem.json
{
"apps" : [{
"name" : "parse-server-wrapper",
"script" : "/usr/bin/parse-server",
"watch" : true,
"merge_logs" : true,
"cwd" : "/home/parse",
"env": {
...
},
"max_memory_restart": "500M",
"instances" : 2,
"exec_interpreter" : "node",
"exec_mode" : "cluster"
},
{
"name" : "parse-dashboard-wrapper",
"script" : "/usr/bin/parse-dashboard",
"watch" : true,
"merge_logs" : true,
"cwd" : "/home/parse",
"max_memory_restart": "500M",
"env": {
"HOST": "localhost",
"PORT": "4040",
"MOUNT_PATH": "/dashboard",
"PARSE_DASHBOARD_ALLOW_INSECURE_HTTP": 1,
...
}
}]
}