在同一服务器上运行多个服务时,传统做法是每个服务都自行配置 Web 服务器和 SSL,维护成本高且易出错。使用
jwilder/nginx-proxy 可以让 Nginx 自动读取 Docker socket,根据容器的标签和环境变量生成路由配置,新增或下线服务时无需手动编辑 nginx.conf。再配合 nginxproxy/acme-companion,让 Let’s Encrypt 证书自动申请与续期,实现全站 HTTPS。部署步骤概览:
1. 创建外部网络webproxy,所有需要被代理的容器加入该网络。
2. 使用 Docker Compose 启动nginx-proxy(暴露 80/443)和acme-companion(共享证书卷),并挂载 Docker socket 与自定义 vhost 目录。
3. 为每个业务容器添加VIRTUAL_HOST、VIRTUAL_PORT、LETSENCRYPT_HOST、LETSENCRYPT_EMAIL环境变量,即可自动获得域名路由和 SSL。
4. 如需特殊规则(IP 白名单、额外 Header),在/srv/nginx-vhosts/<domain>放置自定义片段,nginx‑proxy 会自动加载。
这样,所有服务只需加入同一网络并声明域名,即可获得统一入口、自动 HTTPS 与可扩展的自定义 Nginx 配置,省去手动维护的繁琐。
nginxproxy/nginx-proxy
nginxproxy/acme-companion
#开发者 #工具 #nginxproxy #Docker #HTTPS #LetsEncrypt
@DevToolboxHub
