NGINX 94134#94134上游在从上游读取响应标头时过早关闭连接-Django,Ubuntu



当我的Django应用程序从DigitalOcean(v18+(安装在Ubuntu上时,用户选择了多个文件发送到服务器上,他们会看到以下错误:

502 Bad Gateway
nginx/1.18.0 (Ubuntu)

我检查了显示以下错误的应用程序日志:

2022/08/05 11:13:38 [error] 94134#94134: *108 upstream prematurely closed connection while reading response header from upstream, client: 31**.***,***.23, server: 15**.***.***2, request: "POST /profil/galrtia/apartment-rent/1/ HTTP/1.1", upstream: "http://unix:/home/app/run/gunicorn.sock:/profil/galrtia/apartment-rent/1/", host: "1***.***.***2", referrer: "http://15**8.***.***82/profil/galrtia/apartment-rent/1/"

将文件上传到服务器大约3-4秒后,就会出现错误。我试图增加文件和超时的NGINX配置限制,但没有结果(我仍然看到错误(。我的配置如下:

upstream app_server {
server unix:/home/app/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
# add here the ip address of your server
# or a domain pointing to that ip (like example.com or www.example.com)
server_name 1**.**.***.**2;
keepalive_timeout 10000;
client_max_body_size 10G;
access_log /home/app/logs/nginx-access.log;
error_log /home/app/logs/nginx-error.log;
# Compression config
gzip on;
gzip_min_length 1000;
gzip_buffers 4 32k;
gzip_proxied any;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
gzip_vary on;
gzip_disable "MSIE [1-6].(?!.*SV1)";
location /static/ {
alias /home/app/static/;
}
location /media/ {
alias /home/app/app/app/media/;    }
# checks for static file, if not found proxy to app
location / {
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}

如果用户发送2-3张照片,一切正常。问题出现在大约5张或更多的照片上。该应用程序是一个测试应用程序,这就是为什么我设置了如此大的限制。如何避免NGINX错误?如何解决我的问题,使其不会在传输大量文件时发生?

在DigitalOcean上更改液滴大小解决了我的问题。没有超过我的CPU,与接收到的投递大小相关的传输文件数也在更改前的限制范围内。我不知道为什么这能解决问题。

我发现上游毫无用处,会引发问题,不确定它是否能解决你的问题,但请尝试一下,删除上游和你的@proxy_to_app,并用旧方法尝试:

server {
listen 80;
# add here the ip address of your server
# or a domain pointing to that ip (like example.com or www.example.com)
server_name 1**.**.***.**2;
keepalive_timeout 10000;
client_max_body_size 10G;
access_log /home/app/logs/nginx-access.log;
error_log /home/app/logs/nginx-error.log;
# Compression config
gzip on;
gzip_min_length 1000;
gzip_buffers 4 32k;
gzip_proxied any;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
gzip_vary on;
gzip_disable "MSIE [1-6].(?!.*SV1)";
location /static/ {
alias /home/app/static/;
}
location /media/ {
alias /home/app/app/app/media/;    
}

location / {
proxy_pass http://unix:/home/app/run/gunicorn.sock;
}
}

另外,您的错误可能是,在您的upstream中,您使用了没有http的unix,而您使用了:

server unix:/home/app/run/gunicorn.sock fail_timeout=0;

这可能是需要的:

server http://unix:/home/app/run/gunicorn.sock;

相关内容

  • 没有找到相关文章

最新更新