nginx如何配置ssl证书,启用https?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
书接上文,苏南大叔利用宝塔面板,给网站添加了https
证书并顺利启用。那么这么方便的功能背后,nginx
的相关配置都做了什么样的修改呢?本篇文章就说说https
的相关nginx
设置。
配置信息
以苏南大叔的博客为例,先公布答案:
server{
listen 80;
listen 443 ssl;
#你的配置
ssl_certificate /etc/letsencrypt/live/newsn.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/newsn.net/privkey.pem;
if ($server_port !~ 443){
rewrite ^/.*$ https://$host$request_uri permanent;
}
error_page 497 https://$host$request_uri;
#你的配置
}
自动https
其中,下面这句话就是把http
的请求,转移成https
请求的。
if ($server_port !~ 443){
rewrite ^/.*$ https://$host$request_uri permanent;
}
这段自动跳转https
的存在意义,有待考量。例如苏南大叔的统计相关代码,就是要求能够正常工作在http
和https
两个地方的,这种情况下,如果启用这段代码,就可能会有问题。
并且,https
网站是不能加载http
的js内容的,页面会有警告信息显示。http
的网站是可以加载https
的js的。启用https
的时候,对于协作类的相关内容以及js,就可能具有考量的必要。总的原则上来说:https
和http
网站都是可以加载https
的js的。但是实际的生产环境中,请具体问题具体分析。
配置信息
下面贴出的是,实际工作中使用的ssl
的nginx
配置。仅供参考。
server{
#你的配置
ssl_certificate /etc/ssl/your.domain/fullchain.pem;
ssl_certificate_key /etc/ssl/your.domain/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
if ($ssl_protocol = "") {
rewrite ^/(.*) https://$server_name/$1 permanent;
}
#你的配置
}
总结
如果您想获取更多苏南大叔提供的有关https
的内容,请点击这里:https://newsn.net/tag/https/ 。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。