首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPS协议在ec2实例上不支持django和nginx

HTTPS协议在ec2实例上不支持django和nginx
EN

Stack Overflow用户
提问于 2019-02-22 22:47:49
回答 1查看 430关注 0票数 1

我一直在尝试在ec2实例的django中使用nginx将所有请求自动传输到https协议,但我无法做到。这是我的nginx文件..请给我提个建议。

nginx文件

代码语言:javascript
复制
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

代码语言:javascript
复制
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT =True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

gunicorn.service

代码语言:javascript
复制
[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

我还将我的hostedzone A类型记录设置为elb负载均衡器提供的别名。

我已经尝试了很多方法,比如返回https://sitename,为两种协议创建不同的服务器块,但它会在请求之间启动一个循环。这就是为什么我要发布我最初开始的代码的原因。我已经搜索了很多,但是关于nginx和django都没有帮助,请帮助..我希望我的所有表单请求也通过https只。

EN

回答 1

Stack Overflow用户

发布于 2019-02-22 23:56:21

您需要添加用于ssl的其他服务器数据块,并使用以下ssl配置

此配置还将http请求重定向到https (即SSL443端口)

代码语言:javascript
复制
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;
       }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54829600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档