Протокол HTTPS не работает с django и nginx на экземпляре ec2 - PullRequest
0 голосов
/ 22 февраля 2019

Я пытался автоматически перенести все запросы по протоколу https с помощью nginx в django в экземпляре ec2, но я не могу это сделать ... вот мой файл nginx .., пожалуйста, предложите мне проблему.

Файл nginx

server{
listen 443 ssl;
server_name www.priyamarya.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/ubuntu/project/aryapriyam/;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/project/aryapriyam/project.sock;
    }
}
server{
listen 80;
server_name priyamarya.com;
return 301 https://www.priyamarya.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/ubuntu/project/aryapriyam/;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/project/aryapriyam/project.sock;
    }
}

Я также добавил это в settings.py

settings.py

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT =True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/project/aryapriyam
ExecStart=/home/ubuntu/project/venv/bin/gunicorn --access-logfile - -- 
workers 3 --chdir /home/ubuntu/project/aryapriyam/ --bind 
unix:/home/ubuntu/project/aryapriyam/project.sock 
project.wsgi:application

[Install]
WantedBy=multi-user.target

я также установил в своей размещенной зоне тип записи A псевдоним, предоставленный балансировщиком нагрузки elb.

Я много чего пробовал, например, возвращал https://sitename и создавал другой блок сервера для обоихпротоколы, но затем начинается цикл между запросами.Вот почему я публикую код, с которого я изначально начал.Я много искал, но ничего не помогает в отношении nginx и django, пожалуйста, помогите. Я хочу, чтобы все мои запросы также проходили через https.

1 Ответ

0 голосов
/ 22 февраля 2019

Вам необходимо добавить другой блок сервера для ssl и использовать следующий конфиг для ssl

Этот конфиг также перенаправляет http запрос на https ( т.е. порт ssl 443)

server {
    listen 80;
    server_name testing.com;
    return 301 https://testing.com;
    location = /favicon.ico { access_log off; log_not_found off; }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/sample_project/sample_project.sock;
    }
}

server {
   listen 443 ssl;
   listen [::]:443 ssl;
   server_name testing.com;

   ssl on;
   ssl_certificate /etc/nginx/ssl/nginx.crt;
   ssl_certificate_key /etc/nginx/ssl/nginx.key;
   location /static/ {
           root /home/ubuntu/sample_project;
      }
   location / {
         include proxy_params;
         proxy_pass http://unix:/home/ubuntu/sample_project/sample_project.sock;
       }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...