我们目前有一个 Web 应用程序,可以在 Ubuntu 1.10.3 上运行的 Nginx 上的 angular 框架上运行。尝试访问该站点的错误日志是:
30364#30364: 1000 worker_connections are not enough
30364#30364: *5179370 recv() failed (104: Connection reset by peer) while
reading response header from upstream server:mysite request: "GET /
HTTP/1.1" upstream: myip:80 host:mysite
30364#30364: 1000 worker_connections are not enough
30364#30364: *5179454 no live upstreams while connecting to upstream
Run Code Online (Sandbox Code Playgroud)
我的 Nginx.conf:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1000;
}
http{
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;ssl_protocols TLSv1 TLSv1.1
TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Run Code Online (Sandbox Code Playgroud)
我的默认.conf:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/mysite/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mysite/privkey.pem;
root /home/admin_user/myroot;
large_client_header_buffers 4 32k;
index index.html index.htm index.nginx-debian.html;
server_name myserver;
add_header Strict-Transport-Security max-age=500;
location / {
proxy_pass http://mysite;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Forwarded-Proto https;
}
}
Run Code Online (Sandbox Code Playgroud)
我的根目录的文件结构就是这样的。
破折号表示级别。
-root
--app
---controllers 模型服务样式视图
--bower_components
--config
--data
--data.xlsx
--file.jpg
--index.html
--node_modules
--package.json
--Procfile
-- public
---app.js img
--server.js
这绝不是文件结构的完整视图,但我认为它可能会有所帮助。
您已将 nginx 配置为尝试将自身作为上游连接,而不是连接到 Node.js。
location / {
proxy_pass http://mysite;
Run Code Online (Sandbox Code Playgroud)
Wheremysite解析为同一主机。
在这种情况下,nginx 反复连接回自身以尝试为请求提供服务,这样做了 1000 次,然后耗尽了工作人员。
你有两种可能来解决这个问题:
定义一个引用您正在运行的 Node.js 服务器的upstream命名mysite。例如:
upstream mysite {
server [::1]:3000;
}
Run Code Online (Sandbox Code Playgroud)直接在 中指定上游 URL proxy_pass:
proxy_pass http://[::1]:3000;
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
12293 次 |
| 最近记录: |