环境
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一下访问应该就可以了
易错总结
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.记得域名解析
最后
想看看效果的可以点击我的博客看看噢。