如何在Nginx上启用HTTPS
Posted ShuSheng007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Nginx上启用HTTPS相关的知识,希望对你有一定的参考价值。
[版权申明] 非商业目的注明出处可自由转载
出自:shusheng007
前言
前端时间有个小伙伴在我的博客上留言说:我的博客是http的他感觉很害怕,建议我为博客开启https,于是我抽点时间升级了一下,特此记录一下。
查看 nginx 是否安装 http_ssl_module 模块
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
配置SSL
申请CA证书
如果你已经有证书了那就最好了,如果没有可以使用阿里云申请1年期的免费证书
- 登录你的阿里云,找到SSL证书服务,入下图所示
- 创建免费证书
- 证书申请
点击证书申请,然后填入你的各种申请信息
- 点击购买
当申请信息填完了,就点击购买即可,放心,付款金额为0。正常情况下,很快就签发了。
下载证书
我们是要配置nginx,所以下载适合nginx的证书。里面包含两个文件,一个.key
,一个.pem
。
配置nginx
- 找到nginx配置文件
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
重启nginx
service nginx restart
总结
由于浏览器霸主google Chrome强推https,http怕是很快没有立锥之地了…最后欢迎访问书生的博客汲取知识:ShuSheng007的博客
以上是关于如何在Nginx上启用HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
在哪里/如何编辑 nginx.conf 以在 Elastic Beanstalk 上启用带有附加标头的 SSL
Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持