刚重新建好自己的博客,看到谷歌浏览器地址栏最前面标着“不安全”三个字,还是挺不爽的,所以就顺便配置一下 SSL 证书。
如果你用的是阿里云的服务,那么配置 SSL 挺简单的。
首先去阿里云购买免费的 SSL 证书,有效期一年,到期以后再免费续期。

这是我在阿里云文档里找到的一个截图,下载里面的 nginx 压缩包。
解压后的文件夹中有2个文件:
证书文件:以.pem为后缀或文件类型。
密钥文件:以.key为后缀或文件类型。

我用的是 ubuntu server 服务器,那么 nginx 默认安装位置是在:/etc/nginx/
在此目录下创建cert目录,并把证书文件(.pem)和密钥文件(.key)上传到此目录。

然后打开 nginx 配置自己网站的配置文件,把 server {} 这段内容复制粘贴一份,增加以下配置。
1 2 3 4 5 6 7 8 9 10 11 12 13
| server { listen 443 ssl; listen [::]:443 ssl;
ssl_certificate cert/domain.com.pem; ssl_certificate_key cert/domain.com.key; ssl_session_timeout 30m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; }
|
保存 nginx 配置文件后,退出。
重启 nginx。
新版本的 nginx 已经不再支持以前的重启命令,需要用新的重启命令
先用命令检查一下 nginx 配置是否正确

再用命令找到 nginx 服务的进程号

然后用命令平滑重启,不影响 nginx 继续运行

实现 http 强制跳转 https 的方法
经查询,有多种跳转方法,最后我选择了这一种。
1 2 3 4 5 6 7 8
| server { listen 80; listen [::]:80;
server_name www.domain.com;
return 301 https://$server_name$request_uri; }
|
最后附上完整的 nginx 配置(/etc/nginx/sites-enabled/website):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| server { listen 80; listen [::]:80;
server_name www.guozhenyi.com; root /var/www/website/public; index index.html index.htm;
return 301 https://$server_name$request_uri; }
server { listen 443 ssl http2; listen [::]:443 ssl http2;
ssl_certificate /etc/nginx/cert/www.guozhenyi.com.pem; ssl_certificate_key /etc/nginx/cert/www.guozhenyi.com.key; ssl_session_timeout 30m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on;
server_name www.guozhenyi.com; root /var/www/website/public; index index.html index.htm;
add_header Content-Security-Policy "upgrade-insecure-requests;";
location / { try_files $uri $uri/ =404; }
location ~* \.(js|css)$ { expires 1d; }
location ~* \.(ico|png|jpg|jpeg|gif|webp|svg)$ { access_log off; expires 14d; }
}
|
参考资料:
在Nginx/Tengine服务器上安装证书
nginx配置SSL(https)
–End–
文章标题:Nginx 配置 SSL 证书(https)