nginx证书自动续期
购买服务器
推荐购买香港服务器,这样通过域名访问就不需要备案。
自动续签
先进入docker容器,然后执行续签命令即可,有些镜像可能缺少某些命令,请自行安装
Debian镜像(官方默认)
先进入docker容器
bash
docker exec -it nginx bash
如果提示缺少
crontab
ps
等基础命令,请先行安装。
bash
apt-get update && apt-get install -y cron procps
启动 cron
定时任务
bash
service cron start
运行自动续签命令
bash
curl -s https://get.httpsok.com/ | bash -s xxxxx
安装成功
Alpine镜像
先进入docker容器
bash
docker exec -it nginx sh
检查并启动 cron
定时任务
bash
ps aux | grep -v grep | grep cron || (echo "start cron..." && crond && echo "cron started")
运行自动续签命令
bash
curl -s https://get.httpsok.com/ | sh -s xxxxx
参考配置
yaml
services:
nginx:
container_name: nginx
image: nginx:1.26.2
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./conf.d:/etc/nginx/conf.d
- ./certs:/etc/nginx/certs
nginx
server {
listen 443 ssl;
server_name demo.httpsok.com;
# 设置ssl证书文件路径
ssl_certificate certs/demo.httpsok.com.pem;
ssl_certificate_key certs/demo.httpsok.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000";
# 访问日志
access_log /var/log/nginx/demo.httpsok.com.https.log;
location / {
root /var/html/demo.httpsok.com/;
index index.html;
}
}
bash
# image: nginx:1.26.2 # 默认是Debian的bookworm版本
# image: nginx:1.26.2-bookworm
# image: nginx:1.26.2-alpine # 有crontab Alpine Linux v3.20
# image: nginx:1.26.2-alpine-slim # 不推荐使用slim版本,没有提供curl等基础命令