์ด์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ค์ ์ด๋ ์ ๋ ์ตํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ค์ง์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์ ๋ช ๊ฐ์ง ๋ ์์์ผ๋ ๊ธฐ์ด์ ์ธ ๋ด์ฉ๋ค์ด ์์ต๋๋ค.
Proxy๋ ๊ทธ ์ค ํ๋์ฃ ! ํ๋ก์ ํ๋ก์... ์์ ์ ์ธํฐ๋ท ์ค์ ํ ๋๋ ๋ดค๋ ๋ฏ์ ๋จ์ด์ ๋ํด ์์๋ณผ ๊ฒ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ๋คํธ์ํฌ ์๋น์ค์ ์ ์ํ๊ฒ ํด์ค ์ ์๋ ์๋ฒ*
์๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ๊ณ , ์๋ฒ๊ฐ ์ด์ ๋ฆฌ์คํฐ์ค๋ฅผ ์ฃผ๋ ๋ฐฉ์์ด์์ง๋ง
Proxy๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ค๊ฐ์ ์์นํ์ฌ ๋์ ์์ฒญ์ ๋ฐ๊ฑฐ๋ ์๋น์ ํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
์ฃผ๋ก ๋ณด์์ ์ง์ ์ ๊ทผ์ ๋ง์์ผ ํ ๋๋ ์บ์๋ฅผ ์ ์ฅํ์ฌ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํด์ผํ ๋ ์ฌ์ฉํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ : https://milkye.tistory.com/202
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ ์๋ฒ์์ ๊ทธ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ณ ์๋ฒ ๋์ ์ ๋ฌํ๋ ์๋ฒ์ ๋๋ค.
๋ค์ด์ค๋ ์์ฒญ ์ค, proxy์์ ์์ฒด์ ์ผ๋ก ํน์ ์๋น์ค๋ก์ ์ ๊ทผ์ ์ฐจ๋จํ ์๋ ์์ต๋๋ค.
๋ฐ๋๋ก ์์ฃผ ์ด์ฉํ๋ ์ธํฐ๋ท ์๋น์ค๋ ์บ์ฌ๋ก ์ ์ฅํด๋์๋ค๊ฐ ๋์ ๊บผ๋ด์ค์ผ๋ก์ ์๋๋ฅผ ํฅ์์ํฌ ์ ์์ฃ .๋ด๋ถ์์ ์ธ๋ถ๋ก์ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
Forward์๋ ๋ฐ๋๋ก, ์ธ๋ถ์์ ๋ด๋ถ๋ก์ ์์ฒญ์ ๋ค๋ฃน๋๋ค.
์ธ๋ถ์์ ์์ฒญ์ด ๋ค์ด์์ ๋, ์ ์ ํ ๋ด๋ถ ์๋ฒ์ ๋์ ์ ์ํ ํ
๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
๋ณด์์ด ์ค์ํ ๋์, Load Balancing์๋ ์ ์ฉํฉ๋๋ค.Load Balancing : ๋๋ฌด ๋ง์ ์์ฒญ์ด ๋ค์ด์์ ๋, ๋์ผํ ์๋ฒ๋ฅผ ๋ณต์ ํ์ฌ ์์ฒญ์ ๋ฐฐ๋ถํ์ฌ ์ฒ๋ฆฌํ๋ ๊ฒ!
๊ธฐ๋ณธ์ ์ผ๋ก nginx
๋ก reverse proxy
์๋ฒ๋ฅผ ๋ง๋ ๋ค์, ํน์ ํฌํธ๋ก ๋ค์ด์ค๋ฉด ํน์ ์ญํ ์ ํ๋ ์๋ฒ์ ํฌํธ๋ก ์ฐ๊ฒฐ์์ผ์ฃผ๋ ๊ฒ์ผ๋ก ๊ตฌํํฉ๋๋ค.
๋จผ์ ์๋์ ๊ฐ์ด ๊ธฐ๋ณธ ์ค์ ์ ํด์ค๋๋ค.
๊ฐ์ฅ ์์ ์๋ nginxproxy
๋ reverse proxy ์ญํ ์ ํ๋ nginx์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ ์๋ 2๊ฐ๋ ๊ฐ๊ฐ nginx๋ก ๋ง๋ ์๋ฒ์ apache๋ก ๋ง๋ ์๋ฒ๊ฐ ๋๊ฒ ์ต๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ๋ง๋ค์ด์ค ์๋ฒ๋ port
๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์์ ์ ์์ ๋ถ๊ฐ๋ฅํ์ง๋ง
proxy ์๋ฒ์ port๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์์ ์ ์์ด ๊ฐ๋ฅํฉ๋๋ค.
8080, 8081์ ์ด์ด๋์ ์ด ํฌํธ๋ก ์ ์ํ๋ฉด ๊ฐ ์๋ฒ๋ก ์ฐ๊ฒฐ์์ผ ์ค๋๋ค.
์ด๋ฅผ ์ํ ์ค์ ํ์ผ ์ค์์ ์ค์ํ ์ต์ ๋ช ๊ฐ์ง๋ง ๋ณด๊ณ ๊ฐ๊ฒ ์ต๋๋ค
upstream
server์ 'nginx'๋ผ๊ณ ํ๋ ์ปจํ ์ด๋์ 80๋ฒ port๋ก ์ ์ํ๊ฒ ๋ค
๋ผ๋ ์๋ฏธ์ ๋๋ค. docker-nginx, nginx์ ๊ฐ์ ์ด๋ฆ์ docker-compose ํ์ผ์ ์ด๋ฆ์ ์ฌ์ฉํ๊ฑฐ๋ ์๋ฌด๊ฑฐ๋ ์ง์ด์ฃผ์๋ฉด ๋ฉ๋๋ค.
server
์๋น์ค ๋ณ๋ก ์๋ฒ๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
๋ด์ฉ์ ๋ณด์๋ฉดlisten
์ต์ ์ ํตํด 8080๋ฒ ํฌํธ๋ง ๋ฐ๊ฒ ํ๊ณ
์ ์ฒด ๋ฐ์ดํฐ๋ฅผproxy pass
๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ด์จ ์์ฒญ์ docker-nginx๋ผ๊ณ ํ๋ ๊ฒฝ๋ก๋ก ์ ์กํฉ๋๋ค.
์์ ๊ฐ์ ์ค์ ์ ์ดํดํ์๊ณ docker-compose up -d
๋ช
๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์น์๋ฒ๋ฅผ ์คํ์์ผ์ฃผ์๊ณ
ec2 ์ธ์คํด์ค์ ์ธ๋ฐ์ด๋ ๊ท์น์ 8080ํฌํธ์ 8081ํฌํธ๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ .... ์ ์ํด์ฃผ์๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ ํ์ธํ ์ ์์ต๋๋ค.
8080์ผ๋ก ๋ค์ด๊ฐ์ ๋ nginx
์์ ์ฒ๋ฆฌํ๊ฒ ํ์ผ๋ฏ๋ก nginx
์ ํ๋ฉด์ด ๋จ๊ณ
8081๋ก ๋ค์ด๊ฐ์ ๋ apache
์์ ์ฒ๋ฆฌํ๊ฒ ํ์ผ๋ฏ๋ก apache
์ ํ๋ฉด์ด ๋จ๋ ๊ฒ์ ํ์ธํ ์ ์์ฃ .
์ง๋ ํฌ์คํธ ๋ ์์๋ดค๋ location์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํฉ๋๋ค. ์ ์ด์ ๊ฒฝ๋ก๋ฅผ ๋ค๋ฅด๊ฒ ์ง์ ํด์ ๊ธฐ๋ฅ์ ๋ง๋ ํด๋์ ์ฐพ์๊ฐ๊ฒ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
์ด ๋ถ๋ถ์ listen
์ 80
์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ nginx์ ๊ฒฝ์ฐ์ apache์ ๊ฒฝ์ฐ๋ฅผ location
์ผ๋ก ์์ฑํด์ค๋๋ค.
์์ ๋ด์ฉ์ ๊ฒฝ๋ก๊ฐ ๋ง์ฝ /blog/
๋ก ๋ค์ด์ค๋ฉด nginx
๋ก ์ฒ๋ฆฌํ๊ณ ,
/community/
๋ก ๋ค์ด์ค๋ฉด apache
๋ก ์ฒ๋ฆฌํ๋ผ๋ ๋ด์ฉ์
๋๋ค.
์์ ์ค์ ๋๋ก docker compose
๋ก ์ปจํ
์ด๋๋ค์ ์คํ ์ํจ ๋ค์, ํด๋น ๊ฒฝ๋ก์ blog/๋ผ๋ ํด๋๋ฅผ ๋ง๋ค๊ณ ์์ html์ ๋ง๋ค์ด์ฃผ๊ฒ ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ip/blog/test.html
์ ๋ค์ด๊ฐ์ฃผ๋ฉด...
์ด๋ ๊ฒ ์์์ ์์ฑํ๋ test.html์ ํ์ธํ ์ ์์ต๋๋ค.
์์ ๊ณผ์ ์
- nginx ์ปจํ ์ด๋ ์์ผ๋ก ๋ค์ด์ด (
docker exec -it ~~
)deafult.conf
ํ์ผ์ ์ ์๋์ด ์๋ ๊ฒฝ๋ก์์์blog
ํด๋๋ฅผ ๋ง๋ค๊ณ ์ด ์์ ๋ณด์ฌ์ค ํ์ผ์ ๋ง๋ฆ
์ผ๋ก ์์ฝํ ์ ์์ต๋๋ค.
๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก apache๋ ๋ง๋ค ์ ์์ต๋๋ค.
์ด๋ ๊ฒ community
ํด๋์ htmlํ์ผ์ ๋ง๋ค์ด์ฃผ๊ณ ์ฃผ์์
ip/community/test.html
์ ์
๋ ฅํ๋ฉด
์๊น ์์ฑํด๋จ๋ apache TEST ๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Proxy ์๋ฒ์ ๋ค์ด์ค๋ ์์ฒญ์ ๊ทธ๋๋ก ๋ด๋ถ ์๋ฒ์ ๋ณด๋ด๋ ๊ฒ์ด ์๋
Proxy ์๋ฒ์ ๋ค์ด์ค๋ ์์ฒญ์ ๋ด๋ถ ์๋ฒ์ ๊ฒฝ๋ก ์ค์ ์ ๋ง๊ฒ ๋ฐ๊ฟ์ฃผ๋ ์์ ์ ๋๋ค.
ex) proxy : www.blog.index.html ==> nginx : www.index.html
์์ ๊ฐ์ ์ค์ ๋ณ๊ฒฝ์ ์ํด์๋ nginx rewrite
์ต์
์ ์ดํดํด์ผ ํฉ๋๋ค.
rewrite
๋ ์ ๊ทํํ์์ ์ด์ฉํ์ฌ ํน์ URL๋ก ๋ฐ๊ฟ์ฃผ๋ ์ต์
์
๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋ช๊ฐ์ง ์ต์
์ด ํ์ํ๋ฉด ์ค์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
rewrite ์ต์ :
rewrite regex URL [flag]
nginx์์ ์ฌ์ฉํ๋ regex๋ PCRE ๊ตฌ๋ฌธ์ ๋๋ค.
URL : ๋ณ๊ฒฝํ url ๊ธฐ์ฌ
flag : ์ฌ๋ฌ ๊ฐ์ location์ด ์ค์ ๋์ด ์์ ๋, ๋ณ๊ฒฝ๋ url์ด ๋ค๋ฅธ location์ ๋งค์นญ ๋ ์ ์์ผ๋ฏ๋ก, ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํฉ๋๋ค.
ex )break
flag ์ต์ ์ ํ์ฌ์ location ์ค์ ๋ง ๋ฐ๋ฅด๊ณ ๋๋ ๋๋ค.
์์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
proxy : http://123123/blog/test.html
nginx : http://123123/test.html
rewrite ^/blog(.*)$ $1 break;
^
: /blog๋ก ์์ํ๋ ๋ถ๋ถ์ ์ง์นญํฉ๋๋ค.
.
: ์์์ ํ ๋ฌธ์๋ฅผ ์๋ฏธํฉ๋๋ค.
*
: 0ํ ์ด์ ๋ํ๋๋ ๋ฌธ์๋ฅผ ์๋ฏธํฉ๋๋ค.
$
: ๋๋๋ ๋ฌธ์์ด์ ์๋ฏธํฉ๋๋ค.
-> ^/blog(.*)$
: /blog๋ฅผ ์์ํ๊ณ ๋ถํฐ ๊ทธ ๋ค์ ๋ฌธ์์ด๋ถํฐ ๋๊น์ง
=> /blog/test.html
$1
: ๋ฐ๋ ์์ ๊ดํธ ์์ ๋ค์ด๊ฐ url์ด ๋ค์ด๊ฐ๋๋ค.
=> /test.html
์ฆ, ์์ ์ต์ ์ ์๋์ ๊ฐ์ด ์๋ํฉ๋๋ค.
(1) /blog/test.html์ ๋ฐ์
(2) regex์ ๋ฐ๋ผ blog/test.html์ $1๋ก ๋ณ๊ฒฝ
(3) $1์ ์๊น ์ค์ ํด๋จ๋ test.html
(4) ์ต์ข
์ ์ผ๋ก /blog/test.html์ test.html์ด ๋จ