#port#forwarding#포트#포워딩#ip차단#ip허용
## 1) 톰캣 컨테이너 작성 (서비스 포트는 8080, 8081로 작성)
docker run -it -d -p 8080:8080 -p 8081:8081 -v /home/docker/logs:/share/logs --name mytom centos
## 2) 톰캣 다운로드
curl -L -O http://us.mirrors.quenda.co/apache/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz
## 3) 위에서 만든 컨테이너에 파일 복사
docker cp apache-tomcat-9.0.20.tar.gz mytom:/opt/
## 4) 컨테이너에 접속
docker exec -it mytom bash
## 1) 톰캣 컨테이너에 java 설치
yum -y install java
## 2) 톰캣을 1, 2로 나눠서 설치
cd /opt
tar zxf apache-tomcat-9.0.20.tar.gz
cp -r apache-tomcat-9.0.20 tom1
cp -r apache-tomcat-9.0.20 tom2
## 3) 서비스 포트를 외부공개형으로 변경한다. (2번 톰캣만 8081 로)
3개정도 8081, 18009, 18...
vi tom2/conf/server.xml
## 4) 각각 톰캣의 접속확인 위해 index.jsp 페이지를 수정한다.
vi /opt/tom1/webapps/ROOT/index.jsp
vi /opt/tom2/webapps/ROOT/index.jsp
## 5) 톰캣을 기동한다.
./tom1/bin/startup.sh
./tom2/bin/startup.sh
## 1) Nginx 컨테이너를 80 포트로 만든 후 접속 (mynginx)
docker run -it -d -p 80:80 --name mynginx centos
docker exec -it mynginx bash
## 2) 컨테이너에 Nginx 설치하기위해 레포 작성
vi /etc/yum.repos.d/nginx.repo
--------------------------------------------------------
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
--------------------------------------------------------
## 3) Nginx 설치
yum -y install nginx
## 4) Nginx 로드밸런싱 설정
vi /etc/nginx/nginx.conf
-------------------------------------------------------
http {
upstream muni.com {
// default Round Robin 방식 (돌아가면서 1,2번에 접속한다.)
// least_conn; // Least Connected(젤적은 컨텍션)
// ip_hash; // IP해쉬 (동일한 IP를 동일서버로 전달을 보장)
server 192.168.99.100:8080;
server 192.168.99.100:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://muni.com;
}
}
}
-------------------------------------------------------
## 5) Nginx 기동/정지
/usr/sbin/nginx
/usr/sbin/nginx -s stop
## 6) 톰캣을 돌아가면서 정지/기동하며 확인한다.
./tom1/bin/shutdown.sh
./tom2/bin/shutdown.sh
./tom1/bin/startup.sh
./tom2/bin/startup.sh
※ http://{웹서버IP}:80 은 홈페이지, http://{웹서버IP}:8088 은 관리자용 사이트로 별도 WAS을 관리할 경우 아래와 같이 분기 시킨다.
upstream tomcat {
server 100.0.0.10:8088;
}
upstream myadmin {
server 123.1.1.23:8088;
}
sendfile on;
keepalive_timeout 65;
server_tokens off;
server {
listen 80;
server_name localhost;
location / {
limit_except GET POST {
deny all;
}
proxy_pass http://tomcat;
}
error_page 403 404 405 406 411 497 500 501 502 503 504 505 /error.html;
}
server {
listen 8088;
server_name localhost;
## 관리자는 특정 IP만 허용하고 나머지는 차단한다.
allow 1.2.3.4;
allow 1.10.1.0/24;
deny all;
location / {
limit_except GET POST {
deny all;
}
proxy_pass http://myadmin;
}
error_page 403 404 405 406 411 497 500 501 502 503 504 505 /error.html;
}