中継役としてリバースプロキシが間に立ってリクエストを受け、Webサーバにデータを取りに行く仕組み
Webサーバに接続できるのがリバースプロキシに限定できることから、セキュリティ上の理由でよく使われる
nginxは大量アクセスを処理するのに強みがある
nginxはhtmlなど軽量なリクエストの処理に対応させ、PHPやデータベース処理などはApacheにリクエストを回して処理をする
$ sudo docker pull nginx
$ sudo docker run –rm -p 8080:80 -d nginx
$ sudo docker stop sad_edison
### nginxをリバースプロキシとしたApacheを作る
ホストOS側でポートを利用できるのは1つのポートにつき1つのコンテナのみ
nginxにホストOSの80番ポートを割り当てる
$ tree
.
├── rproxy
│ ├── Dockerfile
│ └── default.conf
└── web
├── Dockerfile
└── index.html
nginxには幾つかconfファイルがある
nginxのプロキシ部分のconfファイルは /etc/nginx/conf.d/default.conf
$ sudo docker run –rm -v /home/vagrant/dev/docker/basic/rproxy:/tmp -it nginx /bin/bash
$ cp /etc/nginx/conf.d/default.conf /tmp/
$ ls rproxy/
Dockerfile default.conf
rproxy/default.conf
location / { root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://web-container/; }
$ sudo docker build -t rproxy-image .
### httpdのDockerfile作成
$ echo “hello world” > index.html
Dockerfile
FROM httpd COPY ./index.html /usr/local/apache2/htdocs/ EXPOSE 80
$ sudo docker build -t web-image .
### Docker上でnetworkを作成する
$ sudo docker network create web-network
$ sudo docker run –name=rproxy-container –net=web-network -p 8080:80 -d rproxy-image
なるほどー