首页 > 解决方案 > Traefik docker(compose),标签中的多个主机。让我们提供不同的 ssl 证书

问题描述

我现在有一个满足我需要的开发设置。我只想提供多个自签名 ssl 证书。我在我的钥匙串(macOS)中添加了一个 ca,并使用该 ca 为每个测试域签署我自己的证书。我正在使用带有 traefik 的 docker-compose 作为代理管理器,并使用 alemp 堆栈进行 wordpress 开发。我现在可以为 {domain}.test 和 www.{domain}.test 生成通配符证书。但我有一些使用超过 1 个域的多站点。它正在同一个 lemp 堆栈上处理 http,但无法弄清楚如何在 traefik 我的配置上使用多个证书:

-- lemp 堆栈(不包括 php 和其他服务)

 version: '3.7'
    services:
      nginx:
        image: nginx:latest
        container_name: ${APP_NAME}-nginx
        volumes:
          - "./nginx/:/etc/nginx/templates/"
          - ./src:/var/www/html:rw,cached
        environment:
          - "NGINX_ENVSUBST_TEMPLATE_SUFFIX=.conf"
        depends_on:
          - app
        networks:
          - default
          - traefik
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.${APP_NAME}.rule=Host(`${DOMAIN}`) || Host(`www.${DOMAIN}`)${DOMAIN_ADDITIONAL} || Host(`${DOMAIN2}`) || Host(`www.${DOMAIN2}`)"
          - "traefik.http.routers.${APP_NAME}.entrypoints=websecure"
          - "traefik.http.services.${APP_NAME}.loadbalancer.server.port=80"
          - "traefik.docker.network=traefik_proxy"
        restart: always

-- 我的 traefik 代理

version: '3.7'

services:
  reverse-proxy:
    container_name: traefik
    # The official v2.0 Traefik docker image
    image: traefik:v2.4
    # Enables the web UI and tells Traefik to listen to docker
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - --entrypoints.websecure.address=:443
      - --entrypoints.websecure.http.tls=true
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --providers.file.directory=/etc/traefik/dynamic
    ports:
      # The HTTP port
      - "192.168.255.1:80:80"
      - "192.168.255.1:443:443"
      # The Web UI (enabled by --api.insecure=true)
      - "192.168.255.1:8080:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/localtime:/etc/localtime:ro
      - ./traefik/dynamic/dynamic.yaml:/etc/traefik/dynamic/dyn.yaml
      - ./traefik/certs:/etc/traefik/certs:ro


networks:
  default:
    name: traefik_proxy
    external: false

标签: dockerssldocker-composetraefik

解决方案


推荐阅读