概要
一つのレンタルサーバーに複数のWebサイトをURLで制御する必要性があり、Dockerとnginxを用いて組んでみたという話
環境
レンタルサーバー : さくらのVPS(1GBプラン)
os : CentOS7
Docker version 19.03.12, build 48a66213fe
nginx version: nginx/1.16.1
Dockerの環境構築
Dockerを使ったこともない人が付け焼刃でDockerを組んでみたら意外と組めるものであったが...
数点はまったので書いておく
- systemctlが使えない
まず、普通にCentosのDockerをたてたが、systemctlが認識されない.....
なんと、起動時に指定しないといけないらしい....(知らなかった....)
ということで、Docker runするときに以下のコマンドを追加
--tmpfs /tmp --tmpfs /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --stop-signal SIGRTMIN+3
- portがかぶって複数のコンテナがたたない
docker container runをするときに ipオプションで ホスト:コンテナの順で、指定する
Dockerをnginxのリバースプロキシで制御する
ここからは本題のDockerをnginxのリバースプロキシで制御したという話
今回の最終目標は以下の図のようにすることである
図の説明をすると、URLを基にDocker1~Docker4のどれかに接続する
今回はSSLについては記述しない
nginxの設定は/etc/nginx/conf.d以下に記述する
接続したいDocckerのコンテナ名でconfファイルを生成する
そこに以下を記述する
server{
listen 80;
server_name <接続したいURL>;
location / {
proxy_pass <DockerのIP>;
}
}
この記述ができ次第nginxを再起動する