はじめに
Dockerのnginxでvirtualhost試したいと思います
そもそもDockerのオプション使えって話かもしれませんが。。
ホスト側環境
Dockerはインストール済みということで。
foderaでやってます
cat /etc/redhat-release
->Fedora release 24 (Twenty Four)
nginx立ち上げる
docker run --name test-nginx -d -p 8080:80 nginx
まずは確認
http://localhost:8080/
welcomeみたいなのが出てたらおっけです
virtualhostの設定
やりたいこと
1つのipアドレスに対して2つのFQDNを使えるようにする
そのために、virtualhostを利用する。
ちなみにipはローカルを使う。(そもそもLAN内での接続が前提です)
要素
一つ目のホスト->www.test1.co.jp
二つ目のホスト->www.test2.co.jp
ipアドレス->127.0.0.1(まぁ、ローカルホストです)
# コンテナのファイルをいじりますので。
docker exec -it test-nginx bash
# vim install ファイルをコピーでもいいんですが。。
apt-get update
apt-get install vim -y
# ファイルを作成します
mkdir /var/www/test1
mkdir /var/www/test2
echo "<html>test1</html>" > /var/www/test1/index.html
echo "<html>test2</html>" > /var/www/test2/index.html
# 該当ファイルを編集します
vi /etc/nginx/conf.d/default.conf
virtualhostのためのコンフィグ設定
先程の二つを追加で記述します。
saerver_nameにFQDN、
rootにドキュメントルートを書く感じですね。
下記みたいな感じです。
# defaultはそのままで下記を追加
server {
listen 80;
server_name www.test1.co.jp;
location / {
root /var/www/test1;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.test2.co.jp;
location / {
root /var/www/test2;
index index.html index.htm;
}
}
設定の確認
/etc/init.d/nginx configtest
成功できたらおっけ。exitする
再起動
docker restart test-nginx
hostsの設定
本当は、DNSサーバーでってなるのですが、
ローカルで試したいので、ホストマシン(今回はfodera)の
/etc/hostsに例の二つを加え、名前解決させます。
127.0.0.1 www.test1.co.jp
127.0.0.1 www.test2.co.jp
最後に確認
http://www.test1.co.jp:8080
http://www.test2.co.jp:8080
それぞれtest1とtest2の文字列が出力されれば成功です。
おわりに
めちゃくちゃ眠い
参考
[library/nginx]
(https://hub.docker.com/_/nginx/)