将网站升级到https协议
获取免费证书
为了鼓励https的普及,EFF成立了免费证书最大的提供商Let’s Encrypt,可以提供免费证书。小型的网站也可以使用免费证书升级为https啦。
当然Let’s Encrypt生成的证书,只能是单域名的,而且只有最低级的域名验证。
克隆letsencrypt客户端
$ git clone https://github.com/letsencrypt/letsencrypt ~/letsencrypt
如果遇到权限问题,记得先创建/opt/letsencrypt文件夹再,更改文件夹权限为可写入。
注册证书
注册一个域名证书非常简单,使用letsencrypt就能生成https所需的证书。当然,用letsencrypt生成的证书只支持域名验证,只需要用letsenctypt的自动注册证书命令,证明这个域名是自己的是用的即可。
1 | $ cd ~/letsencrypt |
letsencrypt可以帮我们自动注册证书,–webroot-path是静态资源所指的路径。-d是域名域名,也可以多个-d增加多个域名。最后确保需要使用https的域名都用letsencrypt注册。
后续将会让你继续输入邮箱信息
如果出现Congratulations!字样,则证明证书注册成功。
指向静态文件Nginx配置Sample:
1 | server { |
Nginx配置各有各的配置方法,这里只要保证四点:
域名配置正确
静态文件目录路径、本地服务目录路径配置正确
.well-known/acme-challenge目录配置正确
要保证80默认端口和443ssl端口都有配置
如果配置好Nginx,那么访问网站就会有绿色的小钥匙啦,说明你的https站点搭建好。
自动更新证书
letsencrypt证书最多只有90天,90天之后我们需要重新注册证书,当然这个可以交给服务器自己做啦。
验证自己的证书是否可以更新
1 | $ cd ~/letsencrypt |
此命令只是验证 不会更新证书
如果出现Congratulations!字样或者已经更新字样则证明可以自动更新。如果出现错误,或者说路径找不到的情况,大多数情况是.well-known/acme-challenge目录配置没有正确的配置成功
编写crontab脚本$ crontab -e
脚本内容
1 | 8 0 11 * * /<你的路径>/letsencrypt-auto renew >> /var/log/le-renew.log |
如果遇到权限问题,可先创建/var/log目录再设置其权限为可写入
nginx内置变量
$host
请求中的主机头(Host)字段,如果请求中的主机头不可用或者空,则为处理请求的server名称(处理请求的server的server_name指令的值)。值为小写,不包含端口。$request_uri
这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。$server_name
服务器域名。