【问题标题】:Getting a Dockerised site to run behind Traefik reverse proxy让 Dockerised 站点在 Traefik 反向代理后面运行
【发布时间】:2019-04-20 18:02:50
【问题描述】:

我按照this tutorial 中的说明将 Traefik v1.7.6 安装为 Docker 容器。

一切正常,该网站的访问地址为:https://proxy.hostname.com

我想添加一个 UniFi 控制器容器以在此反向代理后面运行,但在我的配置方面需要帮助。

this tutorial 之后,我可以创建一个功能容器并访问此站点:https://unifi.hostname.com:8443

端口 8443 是运行 UniFi 的本机 Web 管理端口,但这是我需要帮助的地方。

据我了解,我应该能够通过 Traefik 访问该站点,地址为 https://unifi.hostname.com,并被定向到后端的正确 8443 端口。其次,我们失去了使用 Let's Encrypt 的好处,因为它只为端口 443 上的子域提供证书。

这是我的docker-compose.yml 文件:

version: "3.6"
services:

  unifi:
    hostname: unifi
    image: linuxserver/unifi:latest
    restart: always
    container_name: "unifi"
    volumes:
      - /docker/unifi:/config
    ports:
      - target: 3478
        published: 3478
        protocol: udp
        mode: host
      - target: 10001
        published: 10001
        protocol: udp
        mode: host
      - target: 8080
        published: 8080
        protocol: tcp
        mode: host
      - target: 8081
        published: 8081
        protocol: tcp
        mode: host
      - target: 8443
        published: 8443
        protocol: tcp
        mode: host
      - target: 8880
        published: 8880
        protocol: tcp
        mode: host
      - target: 6789
        published: 6789
        protocol: tcp
        mode: host
    networks:
      - proxy
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    labels:
      - "traefik.enable=true"
      - "traefik.tags=frontend"
      - "traefik.frontend.passHostHeader=true"
      - "traefik.admin.backend=unifi"
      - "traefik.admin.frontend.rule=Host:unifi.hostname.com"
      - "traefik.admin.port=8443"
      - "traefik.admin.protocol=https"

networks:
  proxy:
    external: true

【问题讨论】:

  • 我从您的问题中假设 https://unifi.hostname.com/ 没有按您的预期工作。尝试连接到该地址时,您的 Traefik 日志中是否有任何内容?如果您将浏览器指向该 URL,会发生什么?
  • unifi.hostname.com 导致“错误网关”响应,但确实具有有效证书。 unifi.hostname.com:8443 有效,但没有有效证书。
  • 这可能是人们需要下载和尝试的东西——这些东西可能相当繁琐。我在上面加了赏金。

标签: docker docker-compose traefik


【解决方案1】:

根据我自己的经验,代理 UniFi 控制器一直很痛苦,因为它使用了内置的自签名证书。通常,您必须指示代理在连接到其后端时忽略无效证书。

我建议您需要InsecureSkipVerify 选项,该选项必须在traefik.toml 中启用。

insecureSkipVerify :如果设置为 true,则后端接受无效的 SSL 证书。 注意:这会禁用对中间人攻击的检测,因此只能在安全的后端网络上使用。 - https://docs.traefik.io/configuration/commons/

【讨论】:

  • 如果 UniFi 在 Docker 容器中运行,用户可以使用卷来用真实的证书覆盖自签名证书吗?
  • @halfer 不,它内置在包的深处(java IIRC)
  • 哦,很公平。不过,Traefik 可以配置为接收有效证书上的加密连接,然后它与 UniFi 的连接在后端可能是不安全的,只要 Traefik 和 UniFi 之间的路径不易被拦截。
  • @halfer 完全正确 :) 这就是上面 InsecureSkipVerify 指令的原因。就个人而言,我使用 traefik -> oauth_proxy (plaintext) -> UniFi Controller (self-signed) 添加另一层认证
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
相关资源
最近更新 更多