kosyachniy
@kosyachniy
Python BackEnd, Web FullStack

NGINX + Gunicorn + Flask Почему получаю 500 Internal Server Error когда делаю POST запросы?

Я использую Flask в связке с NGINX & Gunicorn.

Когда я запускаю стандартный сервер FLask, всё окей, все запросы работают.

Когда я подключил gunicorn у меня перестали работать POST запросы. Но проблему решил запуском с 3 workers.
gunicorn --bind 0.0.0.0:5000 wsgi:app -w 3

Дальше. Подключаю NGINX.
Мои конфиги:

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

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;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}


/etc/nginx/sites-available/myproject

server {
    listen 80;
    server_name 157.230.103.16 www.157.230.103.16;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/root/blend/myproject.sock;
    }
}


/etc/systemd/system/myproject.service

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/home/root/blend
Environment="PATH=/home/root/blend/flask/bin"
ExecStart=/home/root/blend/flask/bin/gunicorn --bind unix:myproject.sock wsgi:app -w 3

[Install]
WantedBy=multi-user.target


Все GET запросы работают правильно. POST запросы вообще не приходят. Запускается также с 3мя воркерами.

Логи:

access.log

177.54.88.78 - - [04/Mar/2019:00:28:25 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7"
195.19.247.81 - - [04/Mar/2019:00:42:24 +0000] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537$
195.19.247.81 - - [04/Mar/2019:00:58:37 +0000] "GET / HTTP/1.1" 200 3278 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/53$
195.19.247.81 - - [04/Mar/2019:00:58:41 +0000] "GET /members/ HTTP/1.1" 500 291 "http://157.230.103.16/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) C$
195.19.247.81 - - [04/Mar/2019:01:00:01 +0000] "GET / HTTP/1.1" 200 3278 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/53$
...
195.19.247.81 - - [04/Mar/2019:01:38:21 +0000] "GET /members/ HTTP/1.1" 500 291 "http://157.230.103.16/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) C$
95.213.177.126 - - [04/Mar/2019:01:41:00 +0000] "POST http://check.proxyradar.com/azenv.php?auth=155166365977&a=PSCMN&i=2649122576&p=80 HTTP/1.1" 404 580 "https://proxyradar.com/" "Mozilla/4.0 ($
152.249.19.127 - - [04/Mar/2019:01:41:08 +0000] "GET / HTTP/1.1" 200 8623 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
46.236.65.228 - - [04/Mar/2019:01:46:03 +0000] "GET / HTTP/1.1" 200 8623 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
...


error.log

2019/03/04 01:00:12 [alert] 11248#11248: *2 open socket #11 left in connection 4
2019/03/04 01:00:12 [alert] 11248#11248: aborting
2019/03/04 01:01:06 [crit] 849#849: *1 connect() to unix:/home/root/blend/myproject.sock failed (2: No such file or directory) while connecting to upstream, client: 195.19.247.81, server: 157.23$
2019/03/04 01:01:54 [alert] 849#849: *2 open socket #11 left in connection 4
2019/03/04 01:01:54 [alert] 849#849: aborting
2019/03/04 01:31:46 [alert] 1547#1547: *1 open socket #3 left in connection 3
...


На странице /members происходит POST запрос на этот же сервер /. Но в логах нет никакого запроса. Хотя какой-то левый POST запрос потом позже приходит, те они всё таки могут приниматься. С другого сервера я тоже не могу сделать POST запрос на этот.
Почему так происходит. Как правильно настроить NGINX?

Гайдов много и проблема частая, но мне ничего не помогло.
  • Вопрос задан
  • 1237 просмотров
Решения вопроса 1
kosyachniy
@kosyachniy Автор вопроса
Python BackEnd, Web FullStack
Нужно было настроить логирование
import logging
logging.basicConfig(filename='error.log',level=logging.DEBUG)


Ошибка оказалась в том, что запускалось глобальное, а не виртуальное окружение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы