为什么需要反向代理
为了 https 支持, 先不说安全的问题, 浏览器环境有些 WebAPI 只能在 https 环境下才可以正常使用, 比如: WebRTC 相关的API
nginx-proxy-manager
一款 nginx 的代理管理工具, 内置了自动申请和续签发 Let's Encrypt 证书功能, 非常方便使用,文档在这里
自带 Web UI, 非常易于使用
yml
services:
app:
image: "chishin/nginx-proxy-manager-zh:release"
restart: always
ports:
- "80:80" # 测试 nginx 是否跑起来了
- "443:443" # 代理 https
- "81:81" # 配置管理 nginx 代理的管理后台
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
caddy-server
由于 caddy-server 没有 webui 界面来方便的管理和配置, 所以建议将需要反向代理的 docker-compose 项目直接添加一个 caddy 服务就行, 如果有多个项目的话那还是要单独跑一个, 因为端口不能冲突
yaml
services:
caddy:
image: caddy:latest
container_name: caddy
restart: always
ports:
- "80:80"
- "443:443"
networks:
- app_network
volumes:
- ./caddy_etc:/etc/caddy # 在 Caddyfile 中配置反向代理
- ./caddy_data:/data
- ./caddy_config:/config
adminer:
image: adminer
restart: always
networks:
- app_network
# 不需要再暴露端口了, 因为直接走 caddy 代理了,
# 由于在同一网络下(app_network), 直接通过 docker 网络访问即可
# ports:
# - 8080:8080
networks:
app_network:
txt
adminer.example.com {
reverse_proxy adminer:8080
}