[版权申明] 非商业目的注明出处可自由转载
出自:shusheng007
前端时间有个小伙伴在我的博客上留言说:我的博客是http的他感觉很害怕,建议我为博客开启https,于是我抽点时间升级了一下,特此记录一下。
nginx -V
查看输出的编译参数中是否包含 --with-http_ssl_module
,如果不包含你还要去下载nginx安装包,自己手动编译一下,具体请查看相关资料,不过一般都已经包含了。
如果没有将nginx配置到环境变量路径(Path)中,就需要通过如下命令查看nginx的安装路径。
ps aux | grep nginx
输出:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 11630 0.0 0.0 143000 1648 ? Ss 09:17 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 11633 0.0 0.7 151072 15148 ? S 09:17 0:03 nginx: worker process
root 13974 0.0 0.0 14428 1036 pts/0 S+ 17:34 0:00 grep --color=auto nginx
从上面的输出看呀看出,我们电脑的nginx安装在
/usr/sbin/nginx
如果你已经有证书了那就最好了,如果没有可以使用阿里云申请1年期的免费证书
点击证书申请,然后填入你的各种申请信息
当申请信息填完了,就点击购买即可,放心,付款金额为0。正常情况下,很快就签发了。
我们是要配置nginx,所以下载适合nginx的证书。里面包含两个文件,一个.key
,一个.pem
。
nginx -t
输出如下
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
可见我的nginx的配置文件在
/etc/nginx/nginx.conf
由于我在这个配置文件中使用了如下语句将多个站点的配置给区分开,所以我的配置都在这个路径下
include /etc/nginx/sites-enabled/*;
我的博客https://shusheng007.top
的配置如下
server {
# 服务器端口使用443,开启ssl
listen 443 ssl;
# 你网站的根目录
root /xxxx/xxxx/xxx/wordpress;
# index
index index.php index.html index.htm;
# 域名,多个以空格分开
server_name shusheng007.top www.shusheng007.top;
# 我们刚从阿里云下载的ssl证书地址
ssl_certificate /xxxx/nginx/cert/shusheng007.top.pem; # pem文件的路径
ssl_certificate_key /xxx/nginx/cert/shusheng007.top.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
...
}
#http跳转为https
server {
listen 80;
server_name shusheng007.top www.shusheng007.top;
rewrite ^ https://$host$request_uri? permanent;
}
验证配置文件是否正确
nginx -t
service nginx restart
由于浏览器霸主google Chrome强推https,http怕是很快没有立锥之地了…最后欢迎访问书生的博客汲取知识:ShuSheng007的博客