From 8198b95e464505724bae4e54659925ccc2e872d6 Mon Sep 17 00:00:00 2001 From: wandoubaba Date: Wed, 1 May 2024 11:59:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0SSL=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/README.md b/README.md index 2cc8318..14d7b4d 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,79 @@ docker compose up -d - `conf/conf.d/default.conf`文件是默认站点的配置文件。 - 在`conf/conf.d/`中可以创建多个站点的配置文件,注意相互之间的域名和端口号不要同时冲突。 +## SSL配置 + +以域名`nice.ali02.wandoubaba.com`为例。 + +创建文件`conf/conf.d/nice.ali02.wandoubaba.com.conf`,文件内容参考如下: + +```conf +server { + listen 443 ssl; + server_name ali02.wandoubaba.com; + + ssl_certificate /etc/nginx/certs/ali02_wandoubaba_com_cert.pem; # 证书文件路径 + ssl_certificate_key /etc/nginx/certs/ali02_wandoubaba_com_key.pem; # 私钥文件路径 + + ssl_session_cache shared:SSL:1m; + ssl_session_timeout 10m; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + + #access_log /var/log/nginx/host.access.log main; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + # 下面这行可以解决vue网页刷新后404的问题,但会将所有不存在的url转到index.html上 + # try_files $uri $uri/ /index.html last; + } + + error_page 404 /404.html; + location = /404.html { + root /usr/share/nginx/html; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} +``` + +其中`/etc/nginx/certs/`这个路径是容器内的路径,对应宿主机中的`conf/certs/`目录,所以我们要确保在`conf/certs`目录内存在`ali02_wandoubaba_com_cert.pem`和`ali02_wandoubaba_com_key.pem`这两个文件。至于这两个文件的来源,应该来自于SSL证书的提供商,文件名和文件后缀或许会不同。 + +### ACME自动部署SSL证书 + +下面我们以`freessl.cn`平台上的免费证书为例,可以通过`acme`实现证书自动化部署和续签,仍以`nice.ali02.wandoubaba.com`为例: + +| 条件 | 具体值 | +|---|---| +|证书平台|freessl.cn| +|域名|nice.ali02.wandoubaba.com| +|证书文件路径(宿主机上的绝对路径)|`/app/nginx/conf/certs/nice_ali02_wandoubaba_com_cert.pem`| +|证书私钥文件路径(宿主机上的绝对路径)|`/app/nginx/conf/certs/nice_ali02_wandoubaba_com_key.pem`| + +安装`acme.sh`工具: + +```sh +curl https://get.acme.sh | sh -s email=my@example.com +``` + +安装完成后需要退出终端重新进入一次。 + +接下来可以使用`acme.sh`命令实现证书自动化部署了,命令示例: + +```sh +acme.sh --install-cert \ +-d nice.ali02.wandoubaba.com \ +--key-file /app/nginx/conf/certs/nice_ali02_wandoubaba_com_key.pem \ +--fullchain-file /app/nginx/conf/certs/nice_ali02_wandoubaba_com_cert.pem \ +--reloadcmd "/app/nginx/service reload" +``` + ## 最佳实践 建议不要在本项目的目录中加入任何业务文件,本项目做为单独目录,只提供nginx服务。