首页 > 解决方案 > 多次请求时出现内部服务器错误,nginx + node.js + pm2

问题描述

我已经使用 nginx + node.js + pm2 运行服务器,但是当许多请求来自用户时。带有内部服务器错误的 nginx 响应,不是来自 Express,而是来自 nginx。也许我的设置不好。因为我是服务器设置的新手。

upstream socket_nodes {
        ip_hash;
        server 127.0.0.1:3000;
     }

 server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  suntuk.online;
    #root         /usr/share/nginx/html;
                                                                                                                                                                            ssl_certificate /etc/letsencrypt/live/suntuk.online/fullchain.pem;                                                                                                      ssl_certificate_key /etc/letsencrypt/live/suntuk.online/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

               # modern configuration. tweak to your needs.
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP';
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security max-age=15768000;

    ssl_stapling on;
    ssl_stapling_verify on;

    resolver 8.8.8.8;

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location /socket.io/ {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://socket_nodes;
    }

    location / {
        proxy_pass "http://localhost:3000/";
    }
    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

更新 nginx 日志

    2019/06/08 03:56:38 [alert] 3104#0: *3934813 socket() failed (24: Too many open files) while connecting to upstream, client: 114.5.209.180, server: suntuk.online, request: "GET /post/list/normal HTTP/1.1", upstream: "http://127.0.0.1:3000/post/list/normal", host: "suntuk.online"
2019/06/08 03:56:38 [crit] 3104#0: *3934813 open() "/usr/share/nginx/html/50x.html" failed (24: Too many open files), client: 114.5.209.180, server: suntuk.online, request: "GET /post/list/normal HTTP/1.1", upstream: "http://127.0.0.1:3000/post/list/normal", host: "suntuk.online"
2019/06/08 03:56:38 [crit] 3104#0: accept4() failed (24: Too many open files)
2019/06/08 03:56:38 [alert] 3104#0: *3932615 socket() failed (24: Too many open files) while connecting to upstream, client: 182.0.173.54, server: suntuk.online, request: "POST /comment/insert HTTP/1.1", upstream: "http://127.0.0.1:3000/comment/insert", host: "suntuk.online"
2019/06/08 03:56:38 [crit] 3104#0: *3932615 open() "/usr/share/nginx/html/50x.html" failed (24: Too many open files), client: 182.0.173.54, server: suntuk.online, request: "POST /comment/insert HTTP/1.1", upstream: "http://127.0.0.1:3000/comment/insert", host: "suntuk.online"
2019/06/08 03:56:38 [alert] 3104#0: *3934816 socket() failed (24: Too many open files) while connecting to upstream, client: 182.1.119.227, server: suntuk.online, request: "GET /socket.io/?EIO=3&transport=websocket&sid=x6-AO0fyWJ1KhrLxABVo HTTP/1.1", upstream: "http://127.0.0.1:3000/socket.io/?EIO=3&transport=websocket&sid=x6-AO0fyWJ1KhrLxABVo", host: "suntuk.online"

标签: node.jsnginxpm2

解决方案


推荐阅读