Skip to content

为什么需要反向代理

为了 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
}

Released under the MIT License.