nginx配置https
什么是HTTPS?
在网上冲浪时,大家可能已经注意到链接(URL)通常以HTTP或HTTPS开头。这次我们不会讲解HTTP到底是什么或它如何工作,但是足以说明最后的的“ S”代表“安全”(Secure)。基本上,当大家使用HTTP时,浏览器发送或接收的所有内容都是纯文本格式。HTTP使某些人(黑客)很容易在Internet上查看您所做的事情。HTTPS添加了加密和其他保护,所以可以确定只有两个人可以看到数据:浏览器和链接另一端的Web服务器。
如何使用?
HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码。在握手过程中,网站会向浏览器发送SSL证书,SSL证书和我们日常用的身份证类似,是一个支持HTTPS网站的身份证明。接触过运维的伙伴们都知道,国内几个大平台:阿里云,百度云,腾讯云,华为云等都有提供SSL证书申请服务,但是这些服务大多是都是收费的,虽说也有单域名免费申请,但是其流程比较麻烦,今天就给大家推荐一个免费证书颁发机构:Let's Encrypt
申请证书
接下来教大家如何为Linux下nginx服务器申请SSL证书(其他操作系统和服务器均可参考Let's Encrypt文档)。
-
Let's Encrypt 的官方网站为:https://letsencrypt.org/zh-cn/# ,现在支持简体中文,非常贴心。
-
点击快速入门,选择Cerbot
-
选择服务器和操作系统
-
ssh登录到服务器(为了方便演示,小编直接root登录了,推荐普通用户登录)
-
按照文档提示刷新snap(Ubuntu 18.04自带snap)
sudo snap install core; sudo snap refresh core
-
安装Certbot
sudo snap install --classic certbot
-
命令行上执行以下指令,以确保可以运行
certbot
命令sudo ln -s /snap/bin/certbot /usr/bin/certbot
-
获取证书
sudo certbot certonly --nginx
执行命令后按照提示完成即可
-
到此免费的SSL证书就颁发给你啦
nginx配置HTTPS
编辑 Nginx 根目录下的 conf/nginx.conf
文件。修改内容如下:
- 监听443端口并配置证书和私钥
server {
#SSL 访问端口号为 443
listen 443;
ssl on;
#填写绑定证书的域名
server_name cloud.tencent.com;
#证书文件名称,fullchain.pem替换为证书路径
ssl_certificate fullchain.pem;
#私钥文件名称,privkey.pem替换为私钥路径
ssl_certificate_key privkey.pem;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
root html;
index index.html index.htm;
}
}
- 监听80端口重定向443
server {
# 访问端80端口重定向到443
listen 80;
server_name 你的域名;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
-
使用命令重启nginx
nginx -s reload