self.method = environment ['REQUEST_METHOD']. upper () KeyError: 'REQUEST_METHOD' при настройке сервера django на EC2 с использованием uwsgi - PullRequest
0 голосов
/ 04 апреля 2019

Я получаю

, когда я нажимаю http://ec2-X-YZ-ABC-EFG.compute-1.amazonaws.com/admin.

Я совершенно уверен, что в моем приложении Django нет ничего плохого, поскольку оно пустое, т.е.Я только что создал приложение, используя django-admin startproject tempo с этим изменением - ALLOWED_HOSTS = ['*'], чтобы оно принимало запросы с любых IP-адресов.

Поскольку это сервер разработки, и он не содержит данных, я разрешил запросы от любых хостов.Вот мои входящие правила ,

Ports   Protocol    Source
 80       tcp      0.0.0.0/0, ::/0
 22       tcp      0.0.0.0/0, ::/0  
 443      tcp      0.0.0.0/0, ::/0

Вот мои /etc/nginx/sites-enabled/tempo

upstream tempo-server {
    server   unix:///home/ubuntu/tempo/tempo.sock;
}
server {
    error_log       /var/log/nginx/tempo/error.log;
    access_log      /var/log/nginx/tempo/access.log;
    listen 80;
    server_name X.YX.ABC.DEF;
    location = /media/ {
        root /home/ubuntu/tempo/media;
    }
    location / {
        include        /etc/uwsgi/sites/uwsgi_params;
        uwsgi_pass    tempo-server;
    }
}

, а вот мой uwsgi.ini файл

[uwsgi]
chdir           = /home/ubuntu/tempo
module          = tempo.wsgi
home            = /home/ubuntu/seatr/venv-seatr
master          = true
processes       = 10
socket          = /home/ubuntu/tempo/tempo.sock
chmod-socket    = 777
vacuum          = true

Кроме того, uwsgi запускается без ошибок, файл .sock также успешно создан.

nginx error.log показывает:

2019/04/04 20:03:48 [error] 30261#30261: *9 upstream prematurely closed connection while reading response header from upstream, client: 129.219.8.129, server: X.YZ.ABC.DEF, request: "GET /admin HTTP/1.1", upstream: "uwsgi://unix:///home/ubuntu/tempo/tempo.sock:", host: "ec2-X-YZ-ABC-DEF.compute-1.amazonaws.com"

PS: мои сайты с включенной (мягкой привязкой) содержат только этот файл tempo, доступные сайты содержат пару файлов,

Я читал эту проблему в нескольких местах, но ответов нет:

здесь здесь

1 Ответ

0 голосов
/ 05 апреля 2019

Черт, мой uwsgi_params файл был полностью пуст. В результате nginx не смог отправить параметры типа " REQUEST_METHOD " и, таким образом, вышеуказанную ошибку.

Мой uwsgi_params файл выглядит следующим образом:

uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
...