DockerコンテナにNginxリバースプロキシを導入

Centos7.3で構築したDocker専用仮想マシンのDockerコンテナにNginxリバースプロキシを導入します。Nginxリバースプロキシは先人の力を借りてDocker-Hubのjwilder/nginx-proxyコンテナを使用します。

1.構成と目的

1台の仮想マシンで複数のWebサービスをホストするのが目的です。DockerコンテナでWebサービスを構成し依存関係をなくして独立性を高めます。Webサービスの追加や停止を他のサービスに影響を与えずにできるようにします。

【イメージ図】

【Docker-Compose構成】

以下リバースプロキシ用1つ、Webサービス用に2つの計3つのDocker-Composeファイルを準備します。

2.Docker-Composeの構成
(1)リバースプロキシ用のYMLファイル

今回はまずはhttpだけの設定とします。httpsの設定は当ブログ内の記事「Dockerリバースプロキシ環境にRAINLOOPをインストール」を参照してください。。

NO キー 説明
1 contener_name nginx-proxy サーバで一意にするためコンテナ名を明示的に指定します。
2 ports 80:80 httpを外部からコンテナに受け渡す設定
3 volumes /var/run/docker.sock:/tmp/docker.sock:ro nginx-proxyがDockerコンテナの起動・終了を検知するために必要な設定
4 restart always nginx-proxyが異常終了してもコンテナを自動再起動する設定
5 logging driver: syslog ログをホストのsyslogへ出力する設定
5 networks name: common_link common_linkという名前のネットワークブリッジに参加
(2)Webサービス用のYMLファイル

Webサービス1用の設定です。他にmysqlやphpのサービス定義もありますが省略です。

NO キー 説明
1 VIRTUAL_HOST hogehoge1.com nginx-proxyはこのホスト名を基にアクセスを振り分けてくれます。
2 logging driver: syslog ログをホストのsyslogへ出力する設定
3 networks name: common_link nginx-proxyと同じネットワークブリッジに参加

Webサービス2は上記のcontainer_nameとVIRTUAL_HOSTの1を2に変更すれば作成できますので省略します。

3.ネットワーク作成と起動
(1)ネットワークブリッジ作成

(2)nginx-proxy起動

rvproxyにcdしてからコンテナ起動。Docker-HubよりイメージをPullした後コンテナが起動します。

(3)Webサービスの起動

同様に、websv1,websv2にcdしコンテナを起動します。

4.リバースプロキシ確認

jwilder/nginx-proxyはVIRTUAL_HOSTを指定してコンテナを起動すればそれだけで自動的にリバースプロキをしてくれます。nginxの設定ファイルdefault.confがどのようになっているかコンテナに接続して確認してみます。

/etc/nginx/conf.d/default.confの内容

9行目から22行目がhogehoge1.com用、23行目から36行目がhogehoge2.com用のリバースプロキシ設定が存在します。

jwilder/nginx-proxyが起動したWebサービスに応じてdefault.confを自動的に書き変えていることがわかります。

5.参考にさせて頂いたサイト

nginxを使ったリバースプロキシ on Docker

VPSにdockerで複数サイトをホスティングするには?

ありがとうございます。

スポンサーリンク
レクタングル大広告




レクタングル大広告




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル大広告