特定のサブドメインを含まないワイルドカードサブドメインを持つことは可能ですか?
*.mydomain.com OK
login.mydomain.com SKIP
アプリコンテナでワイルドカードを使用すると、ログインコンテナにアクセスできません。以下は私が達成しようとしていることのイメージです。 (交通ロゴは、技術的にはルートのリストとコンテナの間にある必要があります)
ルールHostRegexp:{subdomain:[a-z]+}.${Host_DOMAIN}
が含まれている場合、次の構成は機能しません。
この構成は、ワイルドカードサブドメインを除くすべてのホスト正規表現を削除した後、正常に機能します。
services:
traefik:
image: traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- .traefik.toml:/etc/traefik/traefik.toml:ro
ports:
- "80:80"
- "443:443"
api:
image: my-api-image
labels:
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.frontend.rule=Host:app.${Host_DOMAIN}; PathPrefix: /api"
app:
image: my-app-image
labels:
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.frontend.rule=Host:app.${Host_DOMAIN}"
- "traefik.frontend.rule=HostRegexp:{subdomain:[a-z]+}.${Host_DOMAIN}" # this second rule overwrites the first rule and I am aware of that, I am just showing what rules i've tried :)
login:
image: my-login-image
labels:
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.frontend.rule=Host:login.${Host_DOMAIN}"
私の問題は現在、app
コンテナにあります。フロントエンドルールとして次のものが含まれていると、ゲートウェイが不良になります。
"traefik.frontend.rule=HostRegexp:{subdomain:[a-z]+}.${Host_DOMAIN}"
また、上記をアプリの下に残して、運が悪ければ以下を削除してみました。
"traefik.frontend.rule=Host:app.${Host_DOMAIN}"
任意の提案やアイデアをいただければ幸いです。ありがとう。
編集:
これを少し言い換えます。
だからこれは私のために働いたものです:
version: '2'
services:
traefik:
image: traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
# I removed your traefik.toml as you did not specify what is in it, so it's irrelevant
ports:
- "80:80"
- "443:443"
# Very helpful for debugging dashboard can be seen at http://localhost:8080 if the port is exposed
- "8080:8080"
labels:
# You don't want traefik trying to create proxy for itself
- "traefik.enable=false"
# Since we have no traefik.toml any longer, let's put the essentials on the command line
command: ["--api","--docker"]
app:
# this is my test image of a web server that dumps request back to the caller
image: andrewsav/talkback
# the hostname is a part of the dump, so let's specify something that we can relate to
hostname: "app"
labels:
# note that you want this frontened to match the last. otherwise it will match login.${Host_DOMAIN}"
- "traefik.frontend.priority=1"
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.frontend.rule=HostRegexp:{subdomain:[a-z]+}.${Host_DOMAIN}"
api:
image: andrewsav/talkback
hostname: "api"
labels:
# this frontend needs to match before the one above
- "traefik.frontend.priority=2"
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.frontend.rule=Host:app.${Host_DOMAIN}; PathPrefix: /api"
login:
image: andrewsav/talkback
hostname: "login"
labels:
- "traefik.frontend.priority=3"
- "traefik.enable=true"
- "traefik.port=80"
- "traefik.frontend.rule=Host:login.${Host_DOMAIN}"
いくつかの注意: