2017-07-13 7 views
0

私は、nginxリバースプロキシ、レールアプリ、および私が別のコンテナに提供するswagger-uiイメージのインスタンスで構成されるドッカーアーキテクチャを持っています。次のようにドッキングウィンドウ・コンでは、同時にnginxで2つのドッカーアップストリームを提供します

私のセットアップは次のとおりです。

web: 
    restart: always 
    ... 

swagger-ui: 
    image: swaggerapi/swagger-ui 
    ports: 
    - '8080:8080' 
    ... 

と私のnginxのconfのファイルを次のように

upstream web-app { 
      server web:80 weight=10 max_fails=3 fail_timeout=30s; 
    } 

    upstream swagger-ui { 
      server swagger-ui:8080 weight=10 max_fails=3 fail_timeout=30s; 
    } 

    server { 
     listen 80; 
     listen [::]:80; 
     server_name www.servername.de servername.de; 
     return 301 https://$server_name$request_uri; 
    } 

    server { 
      listen 443 ssl; 
      listen [::]:443 ssl; 
      server_name servername.de; 
      ssl on; 
      ssl_certificate /etc/ssl/cert.pem; 
      ssl_certificate_key /etc/ssl/cert.key; 
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 


      location /swagger { 
      proxy_pass http://swagger-ui; 
      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Host $host; 
      proxy_cache_bypass $http_upgrade; 
      } 


      location/{ 
      proxy_pass http://web-app; 
      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection 'upgrade'; 
      proxy_set_header X-Forwarded-Proto $scheme; 
      proxy_set_header Host $host; 
      proxy_cache_bypass $http_upgrade; 

      } 

すべてがレールのアプリでうまく動作します。 問題なく443ポートからアクセスできます。

私の問題は、同じ方法で/ swagger/pathにアクセスしたいのですが、今度はswaggerコンテナで実行しているswagger-uiインスタンスにアクセスします。私が404を手に入れたときに、正しく動作するように - 私はおそらく私が同じ時間に両方の仕事をするために何かを逃しているのだろうかと思っていたのですか?

私は一時的に闊歩の場所を設定/およびWebアプリケーションのプロキシをコメントアウトした場合、それは私の威張っ-UIコンテナに正しく指して...

事前にどうもありがとう!

答えて

1

問題は修正する必要があります。

rewrite /swagger/(.*) /$1 break; 

それはあなたのパスから/闊歩を削除し、あなたが必要なものをロードする必要があります

今、あなたはあなたがあなたの場所にこれを追加する必要がありますhttp://swagger-ui:8080/swagger

のようなURLをロードしてみてください。

+0

それが動作します!ありがとうAndrewus! –

関連する問題