はじめに
※ 以下の記事をほぼほぼ参考に試してみた備忘録記事です。
https://qiita.com/hana_shin/items/31232789f4a6510e936b
準備
proxy兼webサーバーの役割を担うコンテナを作成
nginxがproxyの役割を、apache(httpd)がwebサーバの役割を担う想定。
$ docker run -it -d --privileged --name nginx_proxy_and_httpd_server centos:centos7 /sbin/init
nginxとhttpdをインストールする。
$ docker exec -it nginx_proxy_and_httpd_server /bin/bash
# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
# yum -y install nginx
# yum -y install httpd
webサーバーだけの役割を担うコンテナを作成
$ docker run -it -d --privileged --name httpd_server centos:centos7 /sbin/init
httpdをインストールする。
$ docker exec -it httpd_server /bin/bash
# yum -y install httpd
NginxのProxyとしての設定
各コンテナのIPだけ調べておく。
Nginxが入ったProxy兼務のコンテナ側
# hostname -i
172.17.0.2
httpdだけ入ったwebサーバとしての役割だけのコンテナ側
# hostname -i
172.17.0.3
nginx設定ファイル作成。
proxyの設定。
※ /etc/nginx/conf.d/ 配下に「*.conf」の名前でファイルを置いておくと、
元の/etc/nginx/nginx.confファイルから読み込んでもらえるので便利。
# vi /etc/nginx/conf.d/backend.conf
upstream backend {
server 172.17.0.2:80 weight=1;
server 172.17.0.3:80 weight=1;
}
server {
listen 8888;
server_name 172.17.0.2;
location / {
proxy_pass http://backend;
}
}
その他の設定
nginx(Proxy)のポート番号の変更。
# vi /etc/nginx/conf.d/default.conf
server {
#listen 80;
listen 8888;
各ソフトの起動
# systemctl start httpd
# systemctl start nginx
※webサーバーだけのコンテナではhttpdだけ起動する。
# systemctl start httpd
各ソフト起動状態確認
proxy兼webサーバー側コンテナのソフト起動状態確認。
# yum -y install lsof
# lsof -i:8888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 358 root 6u IPv4 339580 0t0 TCP *:ddi-tcp-1 (LISTEN)
nginx 359 nginx 6u IPv4 339580 0t0 TCP *:ddi-tcp-1 (LISTEN)
nginx 360 nginx 6u IPv4 339580 0t0 TCP *:ddi-tcp-1 (LISTEN)
# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 261 root 3u IPv4 656260 0t0 TCP *:http (LISTEN)
httpd 262 apache 3u IPv4 656260 0t0 TCP *:http (LISTEN)
httpd 263 apache 3u IPv4 656260 0t0 TCP *:http (LISTEN)
httpd 264 apache 3u IPv4 656260 0t0 TCP *:http (LISTEN)
httpd 265 apache 3u IPv4 656260 0t0 TCP *:http (LISTEN)
httpd 266 apache 3u IPv4 656260 0t0 TCP *:http (LISTEN)
webサーバーのみのコンテナのソフト起動状態確認。
# yum -y install lsof
# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 176 root 3u IPv4 657417 0t0 TCP *:http (LISTEN)
httpd 177 apache 3u IPv4 657417 0t0 TCP *:http (LISTEN)
httpd 178 apache 3u IPv4 657417 0t0 TCP *:http (LISTEN)
httpd 179 apache 3u IPv4 657417 0t0 TCP *:http (LISTEN)
httpd 180 apache 3u IPv4 657417 0t0 TCP *:http (LISTEN)
httpd 181 apache 3u IPv4 657417 0t0 TCP *:http (LISTEN)
動作確認
proxy兼webサーバー側コンテナのログ確認
# cat /var/log/nginx/access.log
# cat /var/log/httpd/access_log
webサーバーのみのコンテナのログ確認
# cat /var/log/httpd/access_log
proxy兼webサーバー側コンテナからproxyへアクセス
curl http://172.17.0.2:8888
proxy兼webサーバー側コンテナのログ確認
# cat /var/log/nginx/access.log
172.17.0.2 - - [11/May/2021:14:49:35 +0000] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0" "-"
# cat /var/log/httpd/access_log
172.17.0.2 - - [11/May/2021:14:49:35 +0000] "GET / HTTP/1.0" 403 4897 "-" "curl/7.29.0"
webサーバーのみのコンテナのログ確認
# cat /var/log/httpd/access_log
つまりは、今回のアクセスではproxy兼webサーバー側コンテナのwebサーバーへアクセスがいったということ。