Skip to content

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

安装成功

image-20241127031223536

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等基础命令