[Docker] nginxをリバースプロキシにしたApache

中継役としてリバースプロキシが間に立ってリクエストを受け、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

なるほどー