首页 > 解决方案 > Traefik 反向代理到外部服务器

问题描述

我想访问 Internet 上而不是我的 docker 网络上的 Keycloak 服务器。我想将 Keycloak 服务器的域隐藏在我自己的域后面。因此,如果我访问 http://localhost/auth/,则应该显示来自 Keycloak 服务器的页面。我不想重定向到实际的 Keycloak 服务器。

绘画

我尝试了以下配置,但它不起作用。当我转到 http://localhost/auth 时,我得到一个“找不到 404 页面”。我希望你能帮助我。非常感谢您的帮助 :)

码头工人-compose.yml

version: "3.7"

services:

  proxy:
    image: traefik:v2.2
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.file=true"
      - "--providers.file.filename=/etc/traefik/rules.yml"
      - "--entrypoints.web.address=:80"
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./rules.yml:/etc/traefik/rules.yml

  website:
    image: containous/whoami
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.website.rule=Host(`localhost`)"
      - "traefik.http.routers.website.entrypoints=web"

规则.yml

http:
  routers:
    my-route:
      rule: "Host(`localhost`) && PathPrefix(`/auth`)"
      service: my-keycloak-server
  services:
    my-keycloak-server:
      loadBalancer:
        servers:
          - url: "https://keycloak.domain.com/auth"

标签: reverse-proxytraefik

解决方案


改变:

- ./rules.yml:/etc/traefik/rules.yml

至:

- /etc/traefik/rules.yml:/etc/traefik/rules.yml

应该这样做!

PS感谢您的提问;真的很喜欢学习 Traefik 和 Keycloak!


推荐阅读