Docker ComposeとNginxリバースプロキシ:プロキシ経由でバックエンドにアクセスできません

Tarik Moustaid

リバースプロキシコンテナ(jwilder-nginx-proxy image)、fontendコンテナ(Vue jsによって開発およびバンドルされたアプリケーションを提供するnginxコンテナ)、バックエンドコンテナ(NodeJs + ExpressJsアプリを提供するnode6コンテナ)の3つのコンテナを含むプロジェクトがあります)。バックエンドとフロントエンドの両方がリバースプロキシの背後にあります。これが私のローカルホストでどのように機能するかです:

  1. http:// localhost:80 /にアクセスし、GUIを提供します
  2. GUIは、http:// localhost:3500を介してバックエンドからデータを取得する必要があります

バックエンドコンテナを除いて、すべてが完全に正常に機能しているようです。バックエンドにアクセスしようとすると、「502badgateway」エラーが発生します。これがnginxがログに記録するものです:

2017/12/19 06:47:28 [error] 6#6: *3 connect() failed (111: Connection 
refused) while connecting to upstream, client: 172.22.0.1, server: , 
request: "GET /favicon.ico HTTP/1.1", upstream: 
"http://172.22.0.3:3000/favicon.ico", host: "localhost:3500", referrer: 
"http://localhost:3500/"
  • GUIは完全に正常にロードされます。バックエンドに同じロジックを使用しましたが、何も機能していません。
  • バックエンドアプリは、コンテナー内のポート3000にバインドされ、外部の3500にマップされます。

私のバックエンドDockerfileで私はこれを使用しました:

EXPOSE 3000

そして、これが私のdocker-compose.ymlファイルです:

     version: '3'
     services:
         api:
             image: myapp/api
             restart: always
             networks:
                 - myapp_network

         gui:
             image: myapp/gui

             restart: always
             networks:
                 - myapp_network
         reverse:
             image: nginx-reverse
             depends_on:
                 - api
                 - gui
             ports:
                 - 80:8080
                 - 3500:3500
             restart: always
             volumes:
                 - /var/run/docker.sock:/tmp/docker.sock
             networks:
                 - myapp_network
     networks:
         myapp_network:
             driver: bridge

同じことがGUIにも当てはまります。これは、コンテナー内で8080をリッスンし、コンテナー外のポート80にマップされるnginxサーバーです。これをDockerfileで使用しました。

EXPOSE 8080

nginx.confファイル(GUIアプリではなくリバースプロキシの構成に使用したファイル)に問題があると思います。

nginx.conf(リバースプロキシ構成):

http
{

sendfile on;


upstream myapp-api
{
    server api:3000;
}

server
{
    listen 3500;
    add_header    Access-Control-Allow-Origin * always;
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Content-Type';
    gzip_types text/plain text/css application/json application/x-javascript
    text/xml application/xml application/xml+rss text/javascript;
    location /
    {
        proxy_pass http://myapp-api/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
}

upstream myapp-gui
{
    server gui:8080;
}

server
{
    listen 8080;
    add_header    Access-Control-Allow-Origin * always;
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Content-Type';
    gzip_types text/plain text/css application/json application/x-javascript
    text/xml application/xml application/xml+rss text/javascript;
    location /
    {
        proxy_pass http://myapp-gui;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
}

} 

docker-composeファイルに何か問題がありますか?またはnginxconfig?フロントエンドとバックエンドの両方に同じロジックを使用しました。バックエンドのみが機能していません。フロントエンドは機能しています。

作成ファイルのポートをマッピングしているため、nginx-reverse-proxyのDockerfileでexposeディレクティブを使用しませんでした。

誰かが私を助けてくれることを願っています。

ありがとうございました

編集:すべてがうまく構成されているようです。問題はノードjsアプリです。Nginxはnodejsアプリへのリクエストを処理できないようです...誰かが助けることができますか?

Tarik Moustaid

同じ問題を抱えているすべての人に、ここに解決策があります:

  • nginx構成からアクセス制御設定を削除します。そして、Nodejsアプリ内でcorsを処理します。
  • nginx.confで「localhost」を使用する場合は、NodeJs Expressアプリをipv6で使用するように構成します(.listen( 'localhost')の代わりに.listen( '::')を入力します)。
  • この問題が解決しない場合は、最初の2つの手順を実行し、ネットワークモードをホストに切り替えてください。Dockercomposev2を使用している場合は、コンテナーごとに「network_mode:host」を追加します。または、dockerrunの場合は--network = host。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Docker- nginx-リバースプロキシ:docker-composeでビルドしたときにアップストリームにホストが見つかりません

分類Dev

Nginxリバースプロキシの背後にあるDockerコンテナから静的アセットを提供できません

分類Dev

Dockerで自己署名SSLリバースプロキシを設定すると、Laravelプロジェクトにアセットを読み込めません

分類Dev

dockerリバースプロキシ:サーバーブリッジネットワークでjwilder / nginxリバースプロキシを機能させることができません

分類Dev

Docker-SpringBootアプリケーション-ローカルホスト上のMySqlサーバーにアクセスできません

分類Dev

実行中のDockerコンテナのプロキシにアクセスできません

分類Dev

Docker Compose NGINXリバースプロキシ502

分類Dev

nginxリバースプロキシアップストリームがdockerで失敗します-接続拒否メッセージで作成します

分類Dev

DockerでNginxリバースプロキシを使用する

分類Dev

DockerアプリケーションへのNGINXリバースプロキシ

分類Dev

リンクされたDockerコンテナでNGINXリバースプロキシが失敗する

分類Dev

プロキシキャッシュとして構成されたDockerレジストリにイメージをプッシュできません

分類Dev

Docker経由のGUIアプリケーション-X11-「サーバーを初期化できません」

分類Dev

Docker上のASP.NET5Webアプリケーションへのnginxリバースプロキシのリクエストがハングする

分類Dev

phpmyadmin経由でDBにアクセスできません-docker

分類Dev

TLS経由でプライベートDockerレジストリにプッシュできません

分類Dev

Dockerコンテナ用のNginxリバースプロキシ

分類Dev

Dockerの外部でプロキシをNGINXリバースしてdockerコンテナにproxy_passする方法

分類Dev

Windows用のDockerデスクトップ:ブラウザー経由でコンテナーにアクセスできません

分類Dev

Dockerのバックエンドにプロキシする方法はtraefikで作成します

分類Dev

Dockerイメージにあるreactアプリケーションにアクセスできません

分類Dev

docker-composeを使用したPythonアプリのNginxリバースプロキシ

分類Dev

Docker-compose + NginxSSLリバースプロキシ

分類Dev

ブラウザからDockerアプリケーションにアクセスできません

分類Dev

Dockerプロセスを正常にシャットダウンできません

分類Dev

WordPress Dockerコンテナーに/ blogをマップするNginxリバースプロキシ

分類Dev

NginxとDockerでアプリケーションをプロキシする方法

分類Dev

開発マシンのServiceFabricのDockerコンテナからリバースプロキシにアクセスする

分類Dev

dockerリバースプロキシDNS /ネットワークの問題

Related 関連記事

  1. 1

    Docker- nginx-リバースプロキシ:docker-composeでビルドしたときにアップストリームにホストが見つかりません

  2. 2

    Nginxリバースプロキシの背後にあるDockerコンテナから静的アセットを提供できません

  3. 3

    Dockerで自己署名SSLリバースプロキシを設定すると、Laravelプロジェクトにアセットを読み込めません

  4. 4

    dockerリバースプロキシ:サーバーブリッジネットワークでjwilder / nginxリバースプロキシを機能させることができません

  5. 5

    Docker-SpringBootアプリケーション-ローカルホスト上のMySqlサーバーにアクセスできません

  6. 6

    実行中のDockerコンテナのプロキシにアクセスできません

  7. 7

    Docker Compose NGINXリバースプロキシ502

  8. 8

    nginxリバースプロキシアップストリームがdockerで失敗します-接続拒否メッセージで作成します

  9. 9

    DockerでNginxリバースプロキシを使用する

  10. 10

    DockerアプリケーションへのNGINXリバースプロキシ

  11. 11

    リンクされたDockerコンテナでNGINXリバースプロキシが失敗する

  12. 12

    プロキシキャッシュとして構成されたDockerレジストリにイメージをプッシュできません

  13. 13

    Docker経由のGUIアプリケーション-X11-「サーバーを初期化できません」

  14. 14

    Docker上のASP.NET5Webアプリケーションへのnginxリバースプロキシのリクエストがハングする

  15. 15

    phpmyadmin経由でDBにアクセスできません-docker

  16. 16

    TLS経由でプライベートDockerレジストリにプッシュできません

  17. 17

    Dockerコンテナ用のNginxリバースプロキシ

  18. 18

    Dockerの外部でプロキシをNGINXリバースしてdockerコンテナにproxy_passする方法

  19. 19

    Windows用のDockerデスクトップ:ブラウザー経由でコンテナーにアクセスできません

  20. 20

    Dockerのバックエンドにプロキシする方法はtraefikで作成します

  21. 21

    Dockerイメージにあるreactアプリケーションにアクセスできません

  22. 22

    docker-composeを使用したPythonアプリのNginxリバースプロキシ

  23. 23

    Docker-compose + NginxSSLリバースプロキシ

  24. 24

    ブラウザからDockerアプリケーションにアクセスできません

  25. 25

    Dockerプロセスを正常にシャットダウンできません

  26. 26

    WordPress Dockerコンテナーに/ blogをマップするNginxリバースプロキシ

  27. 27

    NginxとDockerでアプリケーションをプロキシする方法

  28. 28

    開発マシンのServiceFabricのDockerコンテナからリバースプロキシにアクセスする

  29. 29

    dockerリバースプロキシDNS /ネットワークの問題

ホットタグ

アーカイブ