IT/DevOps

[AWS] EC2 Nginx Reverse Proxy(feat. Docker compose)

์–ดํฅ๊ผฌ๋น„ 2025. 2. 15.

์ด์ „ ํฌ์ŠคํŒ…

 

[AWS] AWS EC2์—์„œ Docker-compose๋กœ Nginx, Tomcat ์—ฐ๋™

์ด์ „ ํฌ์ŠคํŒ… [AWS] EC2 ์ธ์Šคํ„ด์Šค์—์„œ Spring Boot์™€ Docker๋กœ ๋ฐฐํฌ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ssh๋กœ EC2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•œ ๋‹ค์Œ์— ์ด๋ฃจ์–ด์ง€๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…์„ ๋‹ค๋ฃฌ๋‹ค.ํŒจํ‚ค์ง€ ์ตœ์‹ ํ™”์šฐ๋ถ„ํˆฌ ํ™˜๊ฒฝ์ด๋ผ ์•„๋ž˜ ๋ช…๋ น์–ด

yaga.tistory.com


์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ธฐ์กด์— ๊ตฌ์ถ•ํ™˜๊ฒฝ์— Nginx์˜ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์ด์ „ ํฌ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๊ณ  ์™€์•ผ ์ด๋ฒˆ ๋‚ด์šฉ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ˆ˜์›”ํ•˜๋‹ค.

๊ธฐ์กด์— Docker-composeํ™˜๊ฒฝ์œผ๋กœ Nginx์™€ Tomcat๋งŒ ์„œ๋กœ ์—ฐ๋™ ํ–ˆ์—ˆ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์œ„์™€ ๊ฐ™์ด ๋งŒ๋“ค๊ณ  ๊ธฐ์กด์˜ tomcatํด๋”๋ฅผ tomcat1๋กœ ๊ทธ๋ฆฌ๊ณ  tomcat2ํด๋”๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๋ช‡๊ฐ€์ง€ ์„ค์ •๋งŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

Tomcat1

Dockerfile

์ด๋ฒˆ์—๋Š” app1.war๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝํ–ˆ๊ณ  ํฌํŠธ๋„ 9090์œผ๋กœ ๋ฐ”๊ฟ”์„œ ๋ช…์‹œํ–ˆ๋‹ค.(์ด๊ฑด ๊ฐœ๋ฐœ์ž ๋งˆ์Œ)

์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” "tomcat 1 ==> main request~~~~"๋ผ๊ณ  ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

Tomcat2

Dockerfile

์—ฌ๊ธฐ์„œ๋Š” app2.war๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ–ˆ๋‹ค.

์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” "tomcat 2 ==> main request~~~~"๋ผ๊ณ  ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

nginx.conf

ํ•ต์‹ฌ์ด upstream {์„œ๋ฒ„๋ช…} ๋ถ€๋ถ„์ด๋‹ค.

upstream๋’ค์— ๋ช…์นญ์„ ์ ๊ณ  server๋’ค์— docker-compose.yml์—์„œ ์„ค์ •ํ•œ ์„œ๋น„์Šค๋ช…๊ณผ ํฌํŠธ๋ฅผ ์ ๋Š”๋‹ค.

๊ทธ ํ›„ location / {} ๋ถ€๋ถ„์˜ proxy_pass์— http://{upstream ๋ช…์นญ}์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ upstream ์„œ๋ฒ„๋กœ ํ•˜๊ฒ ๋‹ค๊ณ  ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด๋‹ค.

Docker-compose.yml

๊ธฐ์กด๊ณผ ๋‹ฌ๋ผ์ง„ ๊ฑด ํฌ๊ฒŒ ์—†๋‹ค.

services์•ˆ์˜ ์„œ๋น„์Šค๋ช…์ด tomcat1,2๋กœ ๋ณ€๊ฒฝ, container_name๋„ tomcat1,2๋กœ ๋ณ€๊ฒฝ, ํฌํŠธ ๋ณ€๊ฒฝ

๊ทธ๋ฆฌ๊ณ  ์˜์กด๊ด€๊ณ„๋„ nginx๋Š” tomcat1,2๊ฐ€ ์‹คํ–‰๋œ ํ›„์— ์‹คํ–‰๋˜๋„๋ก ํ–ˆ๋‹ค.

Docker compose๋กœ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ/์‹คํ–‰

sudo docker-compose up -d --build

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

sudo docker ps -a

์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ๋œ ๊ฒƒ ์—†์ด ์ž˜ ์˜ฌ๋ผ์™”๋‹ค.

ํ˜ธ์ถœ ํ…Œ์ŠคํŠธ

๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ EC2 IP ์ž…๋ ฅ ํ›„ ์„œ๋ฒ„์—์„œ tomcat1,2 request๊ฐ€ ๋ฒˆ๊ฐˆ์•„์„œ ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ™•์ธ

๋ธŒ๋ผ์šฐ์ €์—์„œ EC2 IP๋ฅผ ์ž…๋ ฅํ•ด์„œ ์„œ๋ฒ„ ํ˜ธ์ถœ ์‹œ ์˜ˆ์ƒ๋Œ€๋กœ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์„œ๋ฒ„ ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

tomcat ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ์ถœ๋ ฅ

sudo docker logs -f tomcat1
sudo docker logs -f tomcat2

ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•œ ๊ฒƒ ์—†์ด Nginx์˜ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์™€ Docker-compose๋ฅผ ํ†ตํ•ด ์ •๋ง ์†์‰ฝ๊ฒŒ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ๋‹ค.


๊ฐœ์ธ ์Šคํ„ฐ๋”” ๊ธฐ๋ก์„ ๋ฉ”๋ชจํ•˜๋Š” ๊ณต๊ฐ„์ด๋ผ ํ‹€๋ฆฐ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‹€๋ฆฐ ์  ์žˆ์„ ๊ฒฝ์šฐ ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋Œ“๊ธ€