我在用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"