基于 Godaddy 与阿里云, 一键申请 SSL 证书

部署

acme.sh 的部署我采用的是 docker 方式进行部署,相应的 docker-compose.yaml 文件内容如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
version: "3"

services:
  acme.sh:
    image: neilpang/acme.sh:latest
    container_name: acme.sh
    command: daemon
    volumes:
      - "./Volume:/acme.sh"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - DEPLOY_DOCKER_CONTAINER_LABEL=__nginx__
      - DEPLOY_DOCKER_CONTAINER_RELOAD_CMD="nginx -s reload -c /etc/nginx/nginx.conf"
    restart: always
    networks:
      - internal-network

networks:
  internal-network:
    external: true

其中 ./Volume 是用于挂载证书文件夹的。

限制容器在 Docker 输出的日志大小

默认情况下,Docker 容器如果不被销毁的话,那么它的日志会一直保留。如果我们有一个连续运行一年的 NGINX 服务容器,那么它的日志文件就会非常大。 Docker 容器的日志都会挂在到 /var/lib/docker/containers/ 文件夹下,并且以下面的格式进行命名。

1
/var/lib/docker/containers/<container id>/<container id>-json.log

有三种方式限制日志大小,默认情况是全局设置,这样设置的话会对所有容器进行应用。

使用 NGINX 转发 Github Pages 站点

背景

新的 Blog 是基于 Hugo 搭建的,原始博客内容和生成的静态资源,都是托管在 Github 仓库里面的。但 Github Pages 有时候会抽风,并且访问速度并不是很稳定,因此萌生了使用 NGINX 反向代理 Github Pages 的想法。

解决

基本原理就是将目标站点(Github Pages) 作为一个 upstream 服务,然后 NGINX 负责将所有流量都转发到 upstream 即可。因此,我们的配置文件编写就比较简单了,只需要注意 Host 等信息需要使用 upstream 站点的信息(Github Pages)。

使用 ssl on 时,NGINX 提示 Warn

现象

部分站点配置启用了 SSL 证书,启动站点的时候提示 warn。

default.conf

1
2
3
4
5
6
7
8
server{
    listen 443 ssl http2;
    server_name something.example.com;

    ssl on;
    
    # ...
}

Shell 输出

1
2022/09/27 09:39:10 [warn] 1#1: the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/default.conf:5

原因

Built with Hugo
主题 StackJimmy 设计