2016-06-25 14 views
3

私は、ホストに公開されているポート番号3000で稼働しているドッカーコンテナ内のアプリケーションを持っています(これはコンテナのポート3000にマップされたポート3050です)。 nginx-proxyhttp://localhost/usersからポイント/プロキシをhttp://localhost:3050/usersに設定してください。別のドッカーコンテナから配信するためにnginxリバースプロキシを設定する

私は私のdocker-compose.ymlファイルにこのブロックを持っている:私は開始後

api: 
    build: . 
    container_name: api 
    environment: 
    - VIRTUAL_HOST= service.myserver.com 
    - VIRTUAL_PROTO=https 
    volumes: 
    - "./API:/host" 
    links: 
    - Mongo:Mongo 
    ports: 
    - "3050:3000" 

:以下

nginx_service: 
    image: jwilder/nginx-proxy 
    container_name: nginx_server 
    ports: 
    - "80:80" 
    - "443:443" 
    volumes: 
    - ./ssl_certs:/etc/nginx/certs 
    - /var/run/docker.sock:/tmp/docker.sock:ro 

がドッキングウィンドウコンテナ内のポート3000上で私のアプリを実行します docker-compose.ymlで定義された容器であり、私は http://localhost:3050/usersをブラウザに開くことができますが、 http://localhost/usersは表示されません。 のサービスには503のエラーが表示されます。サービスは一時的に利用できません。

多分私は間違った考え方をしている、誰かが助けてくれるか、nginxリバースプロキシで私を修正することができますか?

+2

nginx configにフォワーディングルールを追加する必要があります。あなたはそれをしましたか? – Shibashis

+0

実際にはフォワーディングルールのためではありません。ありがとう – TonyGW

答えて

7

いくつかの検索を行った後、私は一緒に働いてnginxのリバースプロキシがある作業docker-compose.yml引くことができた:私は持っているのNode.jsベースのWebアプリに(画像ドッカハブでjwilder/nginxのプロキシは)別の容器に入れる。

作業は、次のされてそれを作るための鍵:

  1. はnginxのリバースプロキシコンテナ内VIRTUAL_HOST=portは、このportは私のNode.jsアプリはそのコンテナ内で実行ポート(ないマッピングされたポートである必要があります設定
  2. nginxリバースプロキシをhttpsに設定する場合は、SSL証明書を設定する必要がありますが、ウェブアプリケーションコンテナの環境変数VIRTUAL_PROTO=httpにはhttp(httpsではない)を設定する必要があります。以下は

作業ドッカ-compose.ymlです:

nginx_service: 
    image: jwilder/nginx-proxy 
    container_name: nginx_server 
    ports: 
    - "80:80" 
    - "443:443" 
    volumes: 
    - ./ssl_certs:/etc/nginx/certs 
    - /var/run/docker.sock:/tmp/docker.sock:ro 
    environment: 
    - VIRTUAL_PORT=3000 # 3050 port on host does not work! 


api: 
    build: . 
    container_name: api 
    environment: 
    - VIRTUAL_HOST=service.myserver.com 
    - VIRTUAL_PROTO=http # should be http even if you use https to the proxy, because node.js uses http! 
    volumes: 
    - "./API:/host" 
    links: 
    - Mongo:Mongo 
    ports: 
    - "3050:3000" 

希望これは、誰かがいつか、検索エンジンからこのページに上陸するのを助けます!

+3

'http:// localhost/users'を動作させ、' api'サービスの 'environment'に' VIRTUAL_PORT = 3050'を追加し、 'nginx_service'から' environment'ブロックを削除するには、ポート3000をマップする必要はありませんあなたの 'api'サービスのホスト3050へのアクセス。 – Yadvendar

関連する問題