मैं एक यूआरएल को ट्रैफिक के जरिए दूसरे यूआरएल पर रीडायरेक्ट करना चाहता हूं।

मैं इस कॉन्फ़िगरेशन के लिए डॉकर का उपयोग कर रहा हूं और नीचे मेरी docker-compose.yml फ़ाइल है

version: '3'

services:
  reverse-proxy:
    # The official v2.0 Traefik docker image
    image: containous/whoami
    container_name: "whoami_cont"
    # Enables the web UI and tells Traefik to listen to docker
    ports:
      # The HTTP port
      - 80:80
      # The Web UI (enabled by --api.insecure=true)
      - 8080:8080
    labels:
      - traefik.http.middlewares.test-replacepathregex.replacepathregex.regex=^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]
      - traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=http://localhost:8081/4

तो मैं सफलतापूर्वक डोकर-लिखें आदेश चला रहा हूँ। फिर मैं किसी भी यूआरएल को हिट करने जा रहा हूं जो रेगेक्स पैटर्न से मेल खाता है लेकिन यूआरएल दूसरे यूआरएल पर रीडायरेक्ट नहीं कर रहा है - http://localhost:8081 /4 विन्यास के अनुसार। मैं ट्रैफ़िक संस्करण 2.0 . का उपयोग कर रहा हूँ

कृपया मुझे बताएं कि क्या कोई कॉन्फ़िगरेशन गुम है।

2
Dhaval Goti 8 जिंदा 2020, 15:50

1 उत्तर

सबसे बढ़िया उत्तर

आधिकारिक उदाहरण के बाद, ऐसा लगता है कि आपके कॉन्फ़िगरेशन में एक वास्तविक ट्रैफ़िक इंस्टेंस गुम है:

  traefik:
    image: "traefik:v2.0.0-rc3"
    container_name: "traefik"
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

अपनी docker-compose फ़ाइल में Traefik जोड़ने और मिडलवेयर को परिभाषित करने के बाद, आपको यह करना चाहिए अपने मिडलवेयर को राउटर से अटैच करें:

      - "traefik.http.routers.whoami.middlewares=test-replacepathregex"
      - "traefik.http.middlewares.test-replacepathregex.replacepathregex.regex=^/foo/(.*)"
      - "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$$1"

/foo/123 को /bar/123 से बदलने का पूर्ण और कार्यशील (लेकिन सरलीकृत) उदाहरण:

version: "3.3"

services:
  traefik:
    image: "traefik:v2.0.0-rc3"
    container_name: "traefik"
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  whoami:
    image: "containous/whoami"
    container_name: "simple-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`localhost`)"
      - "traefik.http.routers.whoami.entrypoints=web"
      - "traefik.http.routers.whoami.middlewares=test-replacepathregex"
      - "traefik.http.middlewares.test-replacepathregex.replacepathregex.regex=^/foo/(.*)"
      - "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$$1"
4
Yury Fedorov 8 जिंदा 2020, 13:20