2017-01-13 5 views
4

現在、私はいくつかのドッカーコンテナに対して、Traefikを使ってロードバランサ/リバースプロキシを設定しようとしています。私はいくつかのプレフィックスパスを使って自分のアプリケーションを利用できるようにTreafikを設定することに問題があります。 this exampleに基づいて、DockerとDockerを使って基本的なTraefik設定を実行できるようになりました。問題は、パスにアクセスできる 'whoamI'コンテナは取得できますが、アプリや他のコンテナは取得できないということです。Traefikを使ったルーティングパス

たとえば、whoamIコンテナと5つのPortainerコンテナを開始するためのドッキング用の作成ファイル(以下を参照)を作成しました(人々がシナリオを再作成できるように)。私はwoamIが/waiで利用可能で、Portainerが/portainer1であると期待しています。

代わりに、whoainIウェブサーバー(/wai経由)に接続でき、Portainer(/portainer1経由)には接続できません。しかし、私は/portainer2にPortainerに到達することができます。この2つの間のTraefik構成の唯一の違いは、 'Path'の代わりに 'PathStrip'を使用することです。しかし、迷惑なことは、/portainer2にナビゲートすると、私は白いページしか取得できないということです。ページタイトルといくつかのHTMLのみが読み込まれます。私はまた、予想される動作(通常のPortainerページ)を検証するために、ホストマシンに公開されるPortainerコンテナを開始しました。下記の添付イメージも参照してください。

編集:

は興味深いことに、私も同じ白いページが得られ/portainer4/(ただし/portainer4)でPortainerに到達することができますよ。 /portainer2//portainer4/にナビゲートすることの違いは、Traefikでいくつかの追加のログが記録されていることです(下記参照)。 /portainer4/経由でPortainerに移動すると、ログに3つの余分な行が表示され、400のステータスが示されます。若干の調査の後、私はブラウザが追加のファイル(javascriptファイル、ファビコン、スタイルシートなど)を読み込もうとしていることに気付きました。したがって、Portainerに/portainer4/という名前でアクセスすると、私のブラウザはそれらの余分なファイルを取得する必要があることを知っており、そうしようとします(/portainer2にナビゲートすると発生しません)。 /portainer4/ico/favicon.icoにナビゲートするなどしてファイルに自分自身でアクセスしようとすると、400 Bad Requestと表示されます。最後に、/portainer2/ico/favicon.icoにナビゲートするときは、404 page not foundを参照してください。

  • を私はportainer1 /ではなく /portainer2にPortainerに達することができない理由:私は思ったんだけどこれらの結果に基づいて

  • /portainer2に移動するときに、[Portainer]ページ全体が表示されないのはなぜですか? /portainer2//portainer4/
  • 400不正な要求が実際に何を意味するのかとIF /この問題が解決することができますどのようにこの問題

間のファイルにアクセスするとの動作の違い(例えばファビコン)があるのはなぜ

  • Different Treafik paths

    ドッキングウィンドウ-コン:私は本当に正しい方向に

    いくつかのスクリーンショットをいくつかのポインタをいただければ幸いです。YML:

    version: '2' 
    
    services: 
        traefik: 
        container_name: traefik 
        image: traefik 
        command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG 
        ports: 
         - "80:80" 
         - "8080:8080" 
        volumes: 
         - /var/run/docker.sock:/var/run/docker.sock 
         - /dev/null:/traefik.toml 
        labels: 
         - "traefik.enable=false"  
        whoami: 
        image: emilevauge/whoami 
        labels: 
         - "traefik.backend=whoami" 
         - "traefik.frontend.rule=Path: /wai/" 
        portainer1: 
        image: portainer/portainer 
        labels: 
         - "traefik.backend=portainer1" 
         - "traefik.frontend.rule=Path: /portainer1/" 
        portainer2: 
        image: portainer/portainer 
        labels: 
         - "traefik.backend=portainer2" 
         - "traefik.frontend.rule=PathStrip: /portainer2/"  
        portainer: 
        image: portainer/portainer 
        ports: 
         - "9000:9000" 
        labels: 
         - "traefik.enable=false" 
    

    追加Traefikロギングは、それぞれ/wai/portainer1/<myIP>/portainer2//portainer3//portainer4/を、訪問した後に生成:

    time="2017-01-13T14:33:16Z" level=debug msg="Round trip: http://172.19.0.2:80, code: 200, duration: 1.000627ms" 
    time="2017-01-13T14:33:22Z" level=debug msg="Round trip: http://172.19.0.7:9000, code: 404, duration: 1.006089ms" 
    time="2017-01-13T14:33:24Z" level=debug msg="Round trip: http://172.19.0.3:9000, code: 200, duration: 1.160158ms" 
    time="2017-01-13T14:33:26Z" level=debug msg="Round trip: http://172.20.0.5:9000, code: 404, duration: 1.291309ms" 
    time="2017-01-13T14:33:29Z" level=debug msg="Round trip: http://172.20.0.4:9000, code: 200, duration: 2.788462ms" 
    time="2017-01-13T14:33:29Z" level=debug msg="Round trip: http://172.20.0.4:9000, code: 400, duration: 777.073µs" 
    time="2017-01-13T14:33:30Z" level=debug msg="Round trip: http://172.20.0.4:9000, code: 400, duration: 1.780621ms" 
    time="2017-01-13T14:33:30Z" level=debug msg="Round trip: http://172.20.0.4:9000, code: 400, duration: 1.780341ms" 
    
  • 答えて

    4

    今朝は私が解決策を見つけました。このような場合の正しいアプローチは、PathPrefixStripルールを使用することです。ただし、mentioned hereと入力すると、ルールの末尾に/を置くとセットアップが中断されます。私はPathPrefixStrip: /portainer4/ルールの最後に/を取り除いて作業構成を作成しました。だから、このドッキングウィンドウ・コン構成が私の仕事:私は<myIP>/portainer/に移動したときに

    version: '2' 
    
    services: 
        traefik: 
        container_name: traefik2 
        image: traefik 
        command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG 
        ports: 
         - "80:80" 
         - "8081:8080" 
        volumes: 
         - /var/run/docker.sock:/var/run/docker.sock 
         - /dev/null:/traefik.toml 
        labels: 
         - "traefik.enable=false" 
        portainer: 
        image: portainer/portainer 
        labels: 
         - "traefik.backend=portainer" 
         - "traefik.frontend.rule=PathPrefixStrip: /portainer" 
    

    は、今私はportainerページを参照してください。しかし、私は<myIP>/portainerに移動すると先ほど触れたように白いページを取得します。

    関連する問題