2.3 KiB
2.3 KiB
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 配置总览。