Files
yierp-v16/docker/docs/03-production/04-nginx-proxy-acme-companion.md
T
2026-10-18 03:39:07 +08:00

2.3 KiB
Raw Blame History

title
title
NGINX 和 ACME Companion

nginx-proxy + acme-companion(HTTPS)

本指南说明如何使用 nginx-proxy 和 acme-companion 为 Frappe Docker 栈提供 HTTPS。

何时选择此方案

  • 你想要一个简单的基于主机的反向代理
  • 你运行单个 bench 或只有少量主机名
  • 你更喜欢基于环境变量的配置

如果你需要高级路由或复杂的多站点配置,Traefik 通常是更好的选择。

前置条件

  • 公共 DNS 将你的域名指向服务器
  • 端口 80 和 443 可访问(HTTP-01 挑战)
  • 已安装 Docker 和 Docker Compose v2

必需的环境变量

在 .env 中设置这些:

NGINX_PROXY_HOSTS=erp.your-domain.com
LETSENCRYPT_EMAIL=admin@your-domain.com

多个主机名(逗号分隔,无空格):

NGINX_PROXY_HOSTS=erp.your-domain.com,erp2.your-domain.com
LETSENCRYPT_EMAIL=admin@example.com

可选(非默认端口):

HTTP_PUBLISH_PORT=80
HTTPS_PUBLISH_PORT=443

Compose 配置(HTTPS)

对于 HTTPS,你必须包含两个覆盖文件:

  • overrides/compose.nginxproxy.yaml(nginx-proxy,VIRTUAL_HOST)
  • overrides/compose.nginxproxy-ssl.yaml(acme-companion,LETSENCRYPT_HOST)

示例:

docker compose -f compose.yaml \
  -f overrides/compose.mariadb.yaml \
  -f overrides/compose.redis.yaml \
  -f overrides/compose.nginxproxy.yaml \
  -f overrides/compose.nginxproxy-ssl.yaml \
  config > ~/gitops/docker-compose.yml

docker compose --project-name <project-name> -f ~/gitops/docker-compose.yml up -d

如果你使用外部 MariaDB/Redis,请相应替换数据库和 Redis 覆盖文件。

主机名如何应用

NGINX_PROXY_HOSTS 是逗号分隔的主机名列表。覆盖文件将其应用为:

  • VIRTUAL_HOST 用于 nginx-proxy 路由
  • LETSENCRYPT_HOST 用于证书颁发

验证

检查日志以查看证书颁发和代理状态:

docker compose --project-name <project-name> -f ~/gitops/docker-compose.yml logs -f nginx-proxy
docker compose --project-name <project-name> -f ~/gitops/docker-compose.yml logs -f acme-companion

根据注册商的不同,分配可能需要一些时间,同时还必须确保 A 和 AAAA 记录正确指向服务器以颁发证书(如有必要)。

另见:环境变量和 TLS/SSL 配置总览。