1
This commit is contained in:
45
README.md
45
README.md
@@ -15,6 +15,8 @@
|
||||
## 脚本结构
|
||||
|
||||
- `init-certs.sh`:首次初始化入口,内部调用 `scripts/init-certs-core.sh`。
|
||||
- `add-domain-certs.sh`:在 OpenResty 已运行时追加新域名证书,内部调用 `scripts/add-domain-certs-core.sh`。
|
||||
- `reload.sh`:修改 nginx 配置后校验并重载 OpenResty。
|
||||
- `uninstall.sh`:卸载入口,目前用于卸载证书自动续期 cron。
|
||||
- `scripts/`:放具体实现脚本,包括 nginx 域名模板生成、证书初始化核心逻辑、手动续期、安装和卸载续期 cron。
|
||||
|
||||
@@ -65,6 +67,48 @@ sh init-certs.sh --skip-renew-cron
|
||||
重复执行 `init-certs.sh` 不会强制重签已有证书;Certbot 会保留还没到期的证书。
|
||||
重复执行时也不会重复添加 cron;安装脚本会先删除旧任务块,再写入新任务。
|
||||
|
||||
## 追加域名证书
|
||||
|
||||
当 OpenResty 已经在线运行,只需要给新域名补证书时,使用 `add-domain-certs.sh`。
|
||||
|
||||
先把要新增的域名写入 `add-domain-certs.sh` 的 `DOMAINS`,这里只放本次要新增的域名:
|
||||
|
||||
```sh
|
||||
DOMAINS="
|
||||
proxy.sggai.site
|
||||
gitea.sggai.site
|
||||
"
|
||||
```
|
||||
|
||||
然后执行:
|
||||
|
||||
```bash
|
||||
sh add-domain-certs.sh
|
||||
```
|
||||
|
||||
这个脚本会:
|
||||
|
||||
1. 校验 Docker Compose 配置,并确认 `openresty` 容器已经在运行。
|
||||
2. 检查每个新增域名是否已有 nginx 配置。
|
||||
3. 如果缺少 `conf/conf.d/<domain>.conf`,自动调用 `scripts/ensure-domain-conf.sh` 生成基础模板。
|
||||
4. 为缺失证书的新域名生成临时 dummy 证书。
|
||||
5. 校验并重载 OpenResty,让新增配置和 dummy 证书生效。
|
||||
6. 检查本机和公网 HTTP-01 challenge 路径是否可访问。
|
||||
7. 删除本次创建的 dummy 证书,调用 Certbot 申请正式证书。
|
||||
8. 再次重载 OpenResty,让正式证书生效。
|
||||
|
||||
如果服务器无法从本机访问自己的公网域名,但外部访问是正常的,可以跳过公网探测:
|
||||
|
||||
```bash
|
||||
sh add-domain-certs.sh --skip-public-http-check
|
||||
```
|
||||
|
||||
自动生成的 nginx 配置是静态站点基础模板,只保证证书申请和 HTTPS 站点能启动。如果新域名需要反向代理到后端服务,请按业务需要修改 `conf/conf.d/<domain>.conf`,再执行:
|
||||
|
||||
```bash
|
||||
sh reload.sh
|
||||
```
|
||||
|
||||
## 日常启动和停止
|
||||
|
||||
启动:
|
||||
@@ -182,6 +226,7 @@ http://10.1.0.1:3001
|
||||
## 注意事项
|
||||
|
||||
- `certs/`、`logs/`、运行时 webroot 文件默认不提交到 Git。
|
||||
- `conf/conf.d/00-default-deny.conf` 是默认拒绝站点,用于丢弃没有匹配到具体 `server_name` 的 HTTP 请求,并拒绝未知 SNI 的 HTTPS 握手。
|
||||
- 如果证书文件不存在,OpenResty 的 HTTPS 配置会启动失败;首次部署请先运行 `init-certs.sh`。
|
||||
- `ai.sggai.site` 当前通过 `000-` 前缀配置文件覆盖原配置,`openresty -t` 可能出现同名 server 被忽略的 warning。
|
||||
- 如果需要透传带下划线的请求头,例如 `Session_id`,需要确认 Nginx 的 `underscores_in_headers` 策略是否符合预期。
|
||||
|
||||
Reference in New Issue
Block a user