解析服务器&仪表板在PM2上重新启动导致502 Bad Gateway

时间:2016-08-12 12:20:17

标签: nginx parse-server pm2

我在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,
      ...
    }
  }]
}

0 个答案:

没有答案