2017-06-20 8 views
0

異なるポートに3つのドッキングコンテナがあり、それぞれのコンテナにnginxでリバースプロキシを実装したいので、キーワードを渡して各コンテナにナビゲートできますポートの代わりに。 Likeの代わりにhttp://localhost:3000私はように渡したいhttp://localhost/app1異なるポートを持つnginxとdockerコンテナでリバースプロキシを実装する

下のdockerfileでnginxイメージを作成しました。

FROM nginx:alpine 
COPY nginx.conf /etc/nginx/nginx.conf 
COPY index.html usr/share/nginx/html 

と私のnginxのconfのファイル

worker_processes 1; 

イベント{worker_connections 1024のように見えます。 }

HTTP {

sendfile on; 

upstream app1 { 
    server localhost:3000; 
} 

upstream app2 { 
    server localhost:3001; 
} 

server { 
    listen 3000; 

    location /app1 { 
     proxy_pass   http://localhost:3000; 
     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; 
    } 
} 

server { 
    listen 3001; 

    location /app2 { 
     proxy_pass   http://localhost:3001; 
     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; 
    } 
} 

}

が、画像からnginxのコンテナを作成した後。コンテナが作成されているのがわかります。しかし、私はlocalhostでアクセスしようとするとタイムアウトしてしまい、nginxが実行されていないか、何かが恋しくなりませんでした。 localhost/app1またはapp2でコンテナを読み込むことができないか、localhostが動作していません。助けが必要です。前もって感謝します。

答えて

1

コンテナを起動するときにポート80と443を公開していますが、nginx設定でこれらのポートを受信することはありません。

listen 80listen 3000を交換してみた後、私はまた、あなたのドッキングウィンドウコンテナを起動したときに--linkを使用していることがわかりますlocalhost/app1

にアクセスしてみてください。だから、localhostの代わりにapp1app2を使うべきだと思います。私が逃したものがあれば教えてください。また、これらのポート(3000および3001)でアプリケーションにアクセスできることを確認する必要があります。

また、あなたの2箇所には、同じサーバのブロックにする必要があります:あなたの答えのための

server { 
    listen 80; 

    location /app1 { 
     proxy_pass   http://app1:3000; 
     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; 
    } 

    location /app2 { 
     proxy_pass   http://app2:3001; 
     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; 
    } 
} 
+0

Aussourd感謝。私はポート80に耳を傾けるためにそれを変更しましたが、今は500エラーが発生します – Jes

+0

@Jesそれは通常あなたのアプリがクラッシュしていることを意味します。アプリログを確認する必要があります –

関連する問題