uWSGI + nginx: запрос зависает, если указана длина содержимого
Я пытаюсь настроить действительно простой проект uWSGI + nginx. Я столкнулся со следующими проблемами
wsgi.input
кажется пустым (что я обнаружил, пытаясь получить переменные POST)curl http://localhost:8080/parsings
работает нормально, ноcurl http://localhost:8080/parsings --header "Content-Length:1"
зависает а потом возвращаетсяcurl: (52) Empty reply from server
- На nginx ничего не появляется
error.log
, uWSGI тоже ничего не регистрирует. Похоже, что запрос не идет нигде рядом с сервером.
Вот конфиги
nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
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/*;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_connect_timeout 10;
proxy_send_timeout 15;
proxy_read_timeout 20;
}
сайты с поддержкой / MySite
server {
listen 127.0.0.1:8080;
server_name myproject.local;
client_max_body_size 2M;
location / {
include uwsgi_params;
uwsgi_read_timeout 300;
uwsgi_pass unix:///tmp/my_project.sock;
}
}
uwsgi.ini
[uwsgi]
module = wsgi:application
master = true
processes = 5
static-map = /static/=/home/breln/projects/myproject/static
socket = /tmp/my_project.sock
chmod-socket = 777
chown-socket = www-data
vacuum = true
die-on-term = true
Nginx - это 1.11.8 (такая же проблема появилась с 1.10.2). uWSGI - 2.0.14
Любые намеки приветствуются.
1 ответ
Возможно, это связано с тем, что uWSGI не буферизует / не читает данные POST из Nginx, если только ваше приложение WSGI не пытается использовать данные POST в обработчике запросов: