docker-compose에서 리버스 프록시의 동작을 시도했습니다.
3127 단어 docker-compose아파치
개요
지금은 그대로입니다만, apache의 리버스 프록시의 동작을 확인하고 싶고, docker-compose로 환경을 만들어 시험해 보았다.
구성
proxy(Ubuntu): 172.30.0.3
webapp(Ubuntu): 172.30.0.2
proxy와 webapp의 두 컨테이너를 세우고 호스트에서 webapp에 직접 액세스하지 않고,
호스트에서 프록시에 액세스하여 webapp를 볼 수 있는지 확인합니다.
<?php phpinfo();?>
트리 구성
test
|--docker-compose.yml
| |--proxy
| | |--Dockerfile
| | |--apache2.conf
| | |--entrypoint.sh
| | |--node.conf
|--vol # /etc/apache2のマウント
| |--apache2.conf
| |--conf-available
| |--conf-enabled
・・・
|--www # webappのマウント
| |--app
| | |--index.php
구현
docker-compose.yaml
version: '3'
services:
app:
image: php:7.2.11-apache
tty: true
volumes:
- ./www:/var/www/html
ports:
- 80:80
networks:
app_net:
ipv4_address: 172.30.0.2
proxy:
build: ./docker/proxy
tty: true
ports:
- 81:80
# apacheのディレクトリマウント
volumes:
- vol:/etc/apache2/
networks:
app_net:
ipv4_address: 172.30.0.3
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.30.0.0/24
volumes:
vol:
driver_opts:
type: none
device: ${PWD}/vol
o: bind
프록시의 Dockefile
FROM php:7.2.11-apache
ADD ./node.conf /etc/apache2/conf-enabled
ADD ./apache2.conf /etc/apache2
RUN mkdir /work
WORKDIR /work
ADD ./entrypoint.sh /work
# proxyモジュールの有効化
RUN a2enmod proxy && \
a2enmod proxy_http
RUN apt-get update && \
apt-get install build-essential checkinstall
# sourceを使えるように一時的にbashを使う設定
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN source /etc/apache2/envvars
CMD ["/bin/bash", "entrypoint.sh"]
entrypoint.sh
CMD ["apachectl", "-D", "FOREGROUND"]로 실행하면
기동시에 에러가 되기 때문에, 기동시 쉘에 옮겼다.
#!/bin/bash
apachectl -D FOREGROUND
node.conf
/etc/apache2/conf-enabled에 넣습니다. 배치는 dockerfile에서 수행됩니다.
ProxyRequests Off
ProxyPass /app/ http://172.30.0.2/app/
ProxyRequests: 역방향 프록시 설정
ProxyPass: 지정된 요청을 전달합니다. 위의 경우/app/부하 요청
htp://172.30.0.2/아래p/
로 전송합니다.
동작 검증
# proxy側のログ *httpd.confのloglevelをdebugにした時のログ
[proxy:debug] [pid 11] proxy_util.c(2209): [client 172.30.0.1:48208] AH00944: connecting http://172.3
0.0.2/app/index.php to 172.30.0.2:80
# app側のログ
172.30.0.3 - - [26/Jun/2019:06:34:48 +0000] "GET /app/index.php HTTP/1.1" 200 24777 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
Reference
이 문제에 관하여(docker-compose에서 리버스 프록시의 동작을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hanasaku/items/3c82a8b95c7be08a7b83
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
proxy(Ubuntu): 172.30.0.3
webapp(Ubuntu): 172.30.0.2
proxy와 webapp의 두 컨테이너를 세우고 호스트에서 webapp에 직접 액세스하지 않고,
호스트에서 프록시에 액세스하여 webapp를 볼 수 있는지 확인합니다.
<?php phpinfo();?>
트리 구성
test
|--docker-compose.yml
| |--proxy
| | |--Dockerfile
| | |--apache2.conf
| | |--entrypoint.sh
| | |--node.conf
|--vol # /etc/apache2のマウント
| |--apache2.conf
| |--conf-available
| |--conf-enabled
・・・
|--www # webappのマウント
| |--app
| | |--index.php
구현
docker-compose.yaml
version: '3'
services:
app:
image: php:7.2.11-apache
tty: true
volumes:
- ./www:/var/www/html
ports:
- 80:80
networks:
app_net:
ipv4_address: 172.30.0.2
proxy:
build: ./docker/proxy
tty: true
ports:
- 81:80
# apacheのディレクトリマウント
volumes:
- vol:/etc/apache2/
networks:
app_net:
ipv4_address: 172.30.0.3
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.30.0.0/24
volumes:
vol:
driver_opts:
type: none
device: ${PWD}/vol
o: bind
프록시의 Dockefile
FROM php:7.2.11-apache
ADD ./node.conf /etc/apache2/conf-enabled
ADD ./apache2.conf /etc/apache2
RUN mkdir /work
WORKDIR /work
ADD ./entrypoint.sh /work
# proxyモジュールの有効化
RUN a2enmod proxy && \
a2enmod proxy_http
RUN apt-get update && \
apt-get install build-essential checkinstall
# sourceを使えるように一時的にbashを使う設定
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN source /etc/apache2/envvars
CMD ["/bin/bash", "entrypoint.sh"]
entrypoint.sh
CMD ["apachectl", "-D", "FOREGROUND"]로 실행하면
기동시에 에러가 되기 때문에, 기동시 쉘에 옮겼다.
#!/bin/bash
apachectl -D FOREGROUND
node.conf
/etc/apache2/conf-enabled에 넣습니다. 배치는 dockerfile에서 수행됩니다.
ProxyRequests Off
ProxyPass /app/ http://172.30.0.2/app/
ProxyRequests: 역방향 프록시 설정
ProxyPass: 지정된 요청을 전달합니다. 위의 경우/app/부하 요청
htp://172.30.0.2/아래p/
로 전송합니다.
동작 검증
# proxy側のログ *httpd.confのloglevelをdebugにした時のログ
[proxy:debug] [pid 11] proxy_util.c(2209): [client 172.30.0.1:48208] AH00944: connecting http://172.3
0.0.2/app/index.php to 172.30.0.2:80
# app側のログ
172.30.0.3 - - [26/Jun/2019:06:34:48 +0000] "GET /app/index.php HTTP/1.1" 200 24777 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
Reference
이 문제에 관하여(docker-compose에서 리버스 프록시의 동작을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hanasaku/items/3c82a8b95c7be08a7b83
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
test
|--docker-compose.yml
| |--proxy
| | |--Dockerfile
| | |--apache2.conf
| | |--entrypoint.sh
| | |--node.conf
|--vol # /etc/apache2のマウント
| |--apache2.conf
| |--conf-available
| |--conf-enabled
・・・
|--www # webappのマウント
| |--app
| | |--index.php
docker-compose.yaml
version: '3'
services:
app:
image: php:7.2.11-apache
tty: true
volumes:
- ./www:/var/www/html
ports:
- 80:80
networks:
app_net:
ipv4_address: 172.30.0.2
proxy:
build: ./docker/proxy
tty: true
ports:
- 81:80
# apacheのディレクトリマウント
volumes:
- vol:/etc/apache2/
networks:
app_net:
ipv4_address: 172.30.0.3
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.30.0.0/24
volumes:
vol:
driver_opts:
type: none
device: ${PWD}/vol
o: bind
프록시의 Dockefile
FROM php:7.2.11-apache
ADD ./node.conf /etc/apache2/conf-enabled
ADD ./apache2.conf /etc/apache2
RUN mkdir /work
WORKDIR /work
ADD ./entrypoint.sh /work
# proxyモジュールの有効化
RUN a2enmod proxy && \
a2enmod proxy_http
RUN apt-get update && \
apt-get install build-essential checkinstall
# sourceを使えるように一時的にbashを使う設定
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN source /etc/apache2/envvars
CMD ["/bin/bash", "entrypoint.sh"]
entrypoint.sh
CMD ["apachectl", "-D", "FOREGROUND"]로 실행하면
기동시에 에러가 되기 때문에, 기동시 쉘에 옮겼다.
#!/bin/bash
apachectl -D FOREGROUND
node.conf
/etc/apache2/conf-enabled에 넣습니다. 배치는 dockerfile에서 수행됩니다.
ProxyRequests Off
ProxyPass /app/ http://172.30.0.2/app/
ProxyRequests: 역방향 프록시 설정
ProxyPass: 지정된 요청을 전달합니다. 위의 경우/app/부하 요청
htp://172.30.0.2/아래p/
로 전송합니다.
동작 검증
# proxy側のログ *httpd.confのloglevelをdebugにした時のログ
[proxy:debug] [pid 11] proxy_util.c(2209): [client 172.30.0.1:48208] AH00944: connecting http://172.3
0.0.2/app/index.php to 172.30.0.2:80
# app側のログ
172.30.0.3 - - [26/Jun/2019:06:34:48 +0000] "GET /app/index.php HTTP/1.1" 200 24777 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
Reference
이 문제에 관하여(docker-compose에서 리버스 프록시의 동작을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hanasaku/items/3c82a8b95c7be08a7b83
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# proxy側のログ *httpd.confのloglevelをdebugにした時のログ
[proxy:debug] [pid 11] proxy_util.c(2209): [client 172.30.0.1:48208] AH00944: connecting http://172.3
0.0.2/app/index.php to 172.30.0.2:80
# app側のログ
172.30.0.3 - - [26/Jun/2019:06:34:48 +0000] "GET /app/index.php HTTP/1.1" 200 24777 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
Reference
이 문제에 관하여(docker-compose에서 리버스 프록시의 동작을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hanasaku/items/3c82a8b95c7be08a7b83텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)