Nginx-Django项目配置ssl实现https跳转

环境

ubuntu16.04,项目是django项目

首先ssl证书

需要在域名商申请,然后解析,然后将证书下载,放置于服务器的/etc/nginx/cert目录下,若没有则创建一个目录。

修改配置文件

/etc/nginx/conf.d

upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}

server {
    # 监听 https 443端口
    listen 443 ssl;
    server_name  redmango.top;

    ssl on;                              #开启ssl
    ssl_certificate      cert/xxx.pem;     #pem后缀文件
    ssl_certificate_key  cert/xxx.key;     #key后缀文件
    ssl_session_timeout  5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 

    #密码加密方式
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
    #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
    ssl_prefer_server_ciphers  on;       

    location /media  {
        alias /home/mysite/media;  # 指向django的media目录
    }


    location /static {
        alias /home/mysite/static; # 指向django的static目录
    }
        #其他文件转wsgi处理
    location / {
        uwsgi_pass  django;
        include     uwsgi_params; 
    }
}

#配置80端口重定向到https 443
server {
   listen 80;
   server_name redmango.top;
   rewrite ^(.*)$  https://www.$server_name$1 permanent;
}

配置成功后service nginx restart一下访问应该就可以了


image

易错总结

1.若配置后仍无法访问,则可能是服务器没有开启443端口
2.有时候在ie浏览器上直接访问时会跳出来一个nginx welcome,但我明明配置好了,看起来好像也没有什么问题,直接输入https://xxx 是可以访问的,那么可能是nginx目录下的nginx.conf没有注释掉这一句
include /etc/nginx/conf.d/*.conf;注释完重启即可
3.我不想要www的前缀,想输入域名或者输入www.域名 都可以访问到我的网站,那么只需要改一下这句即可,去掉wwwhttps://www.$server_name$1 permanent;
4.记得域名解析

最后

想看看效果的可以点击我的博客看看噢。

你可能感兴趣的:(Nginx-Django项目配置ssl实现https跳转)