阿里云的免费 SSL 证书是一年一次,每年都得自己重新更换
1. 证书申领
2023年阿里云免费SSL证书申请教程-阿里云开发者社区
2. Nginx 配置 SSL 证书
如何在Nginx或Tengine服务器安装SSL证书_数字证书管理服务-阿里云帮助中心
3. 在Nginx独立服务器上安装证书
执行以下命令,在Nginx的conf目录下创建一个用于存放证书的目录。
1 2
| cd /etc/nginx/ mkdir cert
|
将证书文件和私钥文件上传到Nginx服务器的证书目录
编辑Nginx配置文件nginx.conf,修改与证书相关的配置
1 2
| cp ./nginx.conf ./nginx.conf.bnk vim nginx.conf
|
可选:设置HTTP请求自动跳转HTTPS
如果您希望所有的HTTP访问自动跳转到HTTPS页面,则可以在需要跳转的HTTP站点下添加**rewrite**
语句
1 2 3 4 5 6 7 8 9 10
| server { listen 80; server_name itchen.icu; rewrite ^(.*)$ https://$host$1; location / { index index.html index.htm; } }
|
4. 单独配置
因为 http 模块默认包含 include /etc/nginx/conf.d/*.conf
的配置,这样的话我们就不需要吧所有的配置都放在同一个文件里,我们可以拆分配置进行解耦
里面可以配置的内容规则就和 http 里编写的一样
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
| server { listen 443 ssl; server_name itchen.icu; root /usr/share/nginx/html;
ssl_certificate "cert/itchen.icu.pem"; ssl_certificate_key "cert/itchen.icu.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / { }
error_page 404 /404.html; location = /40x.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } }
|
4.1. 多个服务共用 443 端口
由于一台服务器同时有多个服务,这些服务通过域名解析都希望监听 80/443 端口直接通过域名访问,比如有itchen.icu
和 chat.itchen.icu。这时候我们可以使用 nginx 的代理转发功能帮我们实现共用 80/443 端口的需求。
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
| server {
listen 443 ssl; server_name chat.itchen.icu; root /usr/share/nginx/html;
ssl_certificate "cert/chat.itchen.icu.pem"; ssl_certificate_key "cert/chat.itchen.icu.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / { proxy_pass http://localhost:8888; }
error_page 404 /404.html; location = /40x.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } }
|
:::warning
注意事项:
服务器内部转发使用 http 协议而不是使用 https,否者会出现 nginx 502 请求转发报错
:::
4.2 检查配置文件
检查配置文件中是否存在语法错误
:::warning
注意事项
虽然可以通过多个文件进行整合,但是每个单独的文件配置的路径都是基于 /etc/nginx/nginx.conf 的路径
,并不会根据分离的文件内容进行处理后在合并,而是直接合并内容
:::
4.3 重新加载配置文件
已经启动的情况下使用
未开启 nginx