申请证书
个人博客可以申请一个免费的域名型(DV)SSL 证书,有效期一年,这里各个云服务厂商大同小异,需要注意根据自己使用的服务器选择对应的证书,审核通过后就可以下载证书压缩文件了。
解压后可以得到 3 个文件:证书文件 .crt(或 .pem),私钥文件 .key,CSR 文件。其中 CSR 文件是用户申请证书时自动生成的,提供给 CA 机构的,安装时可忽略。接下来我们需要将证书及私钥文件拷贝到 nginx 的配置目录下,这需要用到 scp 加密拷贝命令。
复制证书到服务器
Linux 及 Mac 平台可以直接使用 scp 命令将证书文件远程拷贝到 nginx 配置目录下,Windows 平台可以使用 WinSCP 工具。
scp -P port xxx.crt user@host:/usr/local/nginx/conf/xxx.crt
这里可能会遇到 Permission Denied
的错误提示,如果密码或登录秘钥没有错误,那么需要在本地修改证书文件的访问权限,并在远程服务器修改目标目录的访问权限:
sudo chmod 777 xxx.crt
sudo chmod 777 /usr/local/nginx/conf
文件拷贝到 nginx 配置目录下,就可以进行 nginx 配置了。这里主要讲一下证书配置,以及如何做域名重定向。
修改 nginx 配置
登录远程服务器,修改 nginx 配置文件,证书和配置文件位于同一目录 /usr/local/nginx/conf。
需要修改 servier 部分的配置,修改前:
server {
listen 80 backlog=10000 default;
server_name default;
client_body_in_single_buffer on;
client_max_body_size 2m;
client_body_buffer_size 50m;
proxy_buffering off;
access_log /tmp/access_log.log main;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_connect_timeout 30;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $http_x_forwarded_for;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $http_host;
}
}
修改后
server {
# 监听 SSL 访问端口号 443
listen 443 ssl;
server_name whlpsi.com;
# 设置证书文件
ssl_certificate xxx.crt;
# 设置私钥文件
ssl_certificate_key xxx.key;
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;
access_log /tmp/access_log.log main;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_connect_timeout 30;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $http_x_forwarded_for;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $http_host;
}
# 如果域名不是 whlpsi.com,则重定向到 whpsi.com
if ($host != 'whlpsi.com' ) {
rewrite ^/(.*)$ https://whlpsi.com/$1 permanent;
}
}
# HTTP 重定向到 HTTPS
server {
listen 80;
server_name whlpsi.com;
return 301 https://$host$request_uri;
}
除了基本的 SSL 配置,还增加了两处修改:
- 将 www.whlpsi.com 跳转到 whlpsi.com
- 普通的 HTTP 请求重定向到 HTTPS
配置完成后,使用 openresty -t
或 nginx -t
命令检查配置文件是否书写正确。如果书写无误,可以通过命令 service nginx restart
重启 nginx 服务器。重启后就可以使用 https://whlpsi.com 直接访问了。