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の設定は機会をみて追加する予定。

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.リバースプロキシ確認

nginx-proxyコンテナに接続して設定ファイルの状況を確認します。

/etc/nginx/conf.d/default.confが起動したWebサービスに対応して書き変わっているのがわかります。

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

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

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

ありがとうございます。

シェアする

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

フォローする