[acmesh-official/acme.sh]证书更新了,但是ngxin没有重新加载新证书

2024-01-05 249 views
5

我两个月前用的是docker版本的acme.sh,今天发现自动更新了证书,证书目录下除了key.pem日期没有变化之外,其他3个pem日期都更新了。但是在浏览器上查看证书还是旧的,直到我手动restart了nginx这个容器,浏览器上看到的证书才更新。所以貌似是ngxin没有重新加载新证书,镜像都是最新版本,不知道是什么原因。

nginx: container_name: nginx image: nginx:alpine labels:

  • nginx volumes:

    • "/etc/localtime:/etc/localtime:ro"
    • "./nginx/conf.d:/etc/nginx/conf.d"
    • "./nginx/nginx.conf:/etc/nginx/nginx.conf"
    • "./nginx/cert:/etc/nginx/cert"
    • "./nginx/log:/var/log/nginx"
    • "./wwwroot:/wwwroot" ports:
    • "80:80"
    • "443:443" restart: always

    acme.sh: container_name: acme.sh image: neilpang/acme.sh volumes:

    • "/etc/localtime:/etc/localtime:ro"
    • "/var/run/docker.sock:/var/run/docker.sock"
    • "./acme.sh:/acme.sh" command: daemon environment:
  • DEPLOY_DOCKER_CONTAINER_LABEL=nginx
  • DEPLOY_DOCKER_CONTAINER_KEY_FILE=/etc/nginx/cert/example.com/key.pem
  • DEPLOY_DOCKER_CONTAINER_CERT_FILE="/etc/nginx/cert/example.com/cert.pem"
  • DEPLOY_DOCKER_CONTAINER_CA_FILE="/etc/nginx/cert/example.com/ca.pem"
  • DEPLOY_DOCKER_CONTAINER_FULLCHAIN_FILE="/etc/nginx/cert/example.com/full.pem"
  • DEPLOY_DOCKER_CONTAINER_RELOAD_CMD="service nginx force-reload" restart: always

回答

5

尝试这个命令, 给个log

docker  exec -it  acme.sh  --cron --debug 2
docker  exec -it  acme.sh  --cron --debug 2  --force
7

看日志时都成功了.

先检查一下 nginx container 里面的文件内容对不对. 比如: /etc/nginx/cert/example.com/cert.pem

如果文件对, 在检查 相应的 nginx conf 里面指向的文件路径是不是这个路径.

如果路径都对, 再手动重新加载/重启nginx 试试.

7

检查了文件时间和路径都没什么问题

3

检查文件内容.

这没什么火箭科技. 无非就是 证书文件, 以及 nginx 是否应用了相应的文件. 一步一步检查.

7
- DEPLOY_DOCKER_CONTAINER_RELOAD_CMD="service nginx force-reload"

我觉得问题在这里啊,nginx是另外的一个容器。这里指定的命令是在acme.sh这个容器内跑的,所以这个命令应该执行不成功吧?

5

解决这个问题,要不要在host主机增加一个自动任务,每天去把nginx reload一下?这样不知道会不会有副作用?