https 全称:Hyper Text Transfer Protocol over Secure Socket Layer,是http的安全版。即http下加入SSL协议层,所以https的安全基础就是SSL,因此加密内容须要SSL。html
首先须要申请一个证书,能够申请一个免费的。nginx
如何申请浏览器
我是用的腾讯云,云产品-》域名与网站-》SSL证书管理安全
而后选免费版的,通常免费版有效期是一年,而后填各类信息,提交审核就行了,审核很快的,一个小时工做时间左右吧服务器
审核成功后就能够在证书列表里下载证书了,下载出来是一个压缩包,里面有各类版本的证书:Apache、IIS、Nginx、Tomcat;session
咱们这里用到的是nginx版本证书,一个公钥,一个私钥。将其上传到服务器目录,我是传到了 /etc/pki/nginx 目录下,记住这个目录哦,待会配置的时候会用到post
先确认nginx安装时已编译http_ssl
模块,也就是执行 nginx -V
命令查看是否存在--with-http_ssl_module
。通常都会有的,若是没有,则须要从新编译nginx将该模块加入。网站
修改Nginx配置加密
打开 Nginx 的默认配置文件 /etc/nginx/nginx.conf ,如何打开和编辑请参考上一篇文章《云服务器搭建 Nginx 静态网站》url
打开后有两个server配置对象
第一个是监听80端口的,内容请参考以下伪代码:
server {
listen 80;
server_name 你的域名 www.你的域名;
root /data/www(你nginx配置的静态资源目录);
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# 将http强制转https
location / {
rewrite (.*) https://www.你的域名$1 permanent;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
第二个是监听443端口的,默认是注释的,先取消注释,内容参考以下:
server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name 你的域名 www.你的域名; root /data/www(你nginx配置的静态资源目录);
ssl_certificate "/etc/pki/nginx/1_www.dingjianjun.cn_bundle.crt"(你刚才传到服务器上的证书地址,叫你记住的哦);
ssl_certificate_key "/etc/pki/nginx/2_www.dingjianjun.cn.key"(你刚才传到服务器上的证书地址);
ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
重启nginx
nginx -s reload
顺利的话,你用浏览器访问你的域名,应该就能自动变成https了,就不用看下面的了
----------------------------------------分割线-----------------------------------------------
我本身遇到过一个问题,就是重启失败吧,好像是80端口被占用了
列出监听的TCP端口
netstat -ltunp
我是把这个冲突的进程杀死了,能够杀死指定PID的进程,好比我上面那个进程的PID是17220
kill 17220
而后再重启nginx:
nginx -s reload
到这里应该就能够了,本身多实践多调研吧,每一个人状况可能不同,但愿对你有帮助!