๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ› Others.../- infra [linux, aws, docker, k8s]

[Infrastructure] Proxy์˜ 2๊ฐ€์ง€ ์ข…๋ฅ˜ Forward Proxy ๊ทธ๋ฆฌ๊ณ  Reverse Proxy์˜ ๋ช…ํ™•ํ•˜๊ณ  ํ™•์‹คํ•œ ์ฐจ์ด์ ์„ ์ด์•ผ๊ธฐํ•ด๋“œ๋ฆด๊ฒŒ์š”.

by Wonit 2020. 11. 27.

Forward Proxy ๊ทธ๋ฆฌ๊ณ  ReverseProxy์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

 

์ผ๋‹จ ์ด ์ฐจ์ด์ ์„ ๊ณต๋ถ€ํ•  ๋•Œ ๊ฐœ๋…์€ ์‰ฌ์› ์ง€๋งŒ Forward์™€ Reverse ์‚ฌ์ด์— ๊ฐœ๋…์ด ๋งค์šฐ ํ˜ผ๋™์Šค๋Ÿฌ์› ๋‹ค.

 

๋ญ”๊ฐ€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๊ฐ™์€ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜์ง€๋งŒ ํ•œ ๋ ์ฐจ์ด?๋กœ ๋‹ค๋ฅธ ๊ฐœ๋…์ด ๋˜๋Š” ๊ฒƒ์ด ์กฐ๊ธˆ ํ˜ผ๋™์Šค๋Ÿฌ์› ๊ณ  ๊ทธ ํ˜ผ๋™ ์‚ฌ์ด์—์„œ ์ด ๋‘˜์„ ๊ตฌ๋ถ„ํ•˜๋Š”๊ฒŒ ์‰ฝ์ง€ ์•Š์•˜์ง€๋งŒ ์ด๋“ค์„ ๊ตฌ๋ถ„ํ•˜๋ฉฐ ์•Œ์•„๋ดค๋˜ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด ๋‚˜๋ˆ ์ฃผ๋ ค ํ•œ๋‹ค.

 

์ผ๋‹จ ์ด ๋‘ ํ”„๋ก์‹œ ์ „๋žต์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๋ฌด์—‡์ด ํ”„๋ก์‹œ์ธ๊ฐ€?์—์„œ ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ํ™•์ธํ•˜๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.


ํ”„๋ก์‹œ์—๋Š” 2๊ฐ€์ง€์˜ ์‚ฌ์šฉ ์ „๋žต์ด ์žˆ๋‹ค.


์ด๋“ค์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์€ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์–ด๋””์— ์œ„์น˜ํ•ด ์žˆ๋ƒ์— ๋”ฐ๋ผ์„œ ๋‚˜๋‰œ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์„

  • Forward Proxy
  • Reverse Proxy

๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

์ด๋“ค์˜ ๊ฐœ๋…์€ ์กฐ๊ธˆ ์• ๋งคํ•œ ๋ถ€๋ถ„๋•Œ๋ฌธ์— ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ—ท๊ฐˆ๋ คํ•œ๋‹ค.


์˜ค๋Š˜ ํ™•์‹คํžˆ ๊ทธ ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๊ตฌ๋ถ„์ง€์–ด๋ณด์ž.

Proxy

์ผ๋‹จ ํ”„๋ก์‹œ์˜ ๊ฐœ๋…์—์„œ ์ด์•ผ๊ธฐ ํ–ˆ๋˜ ๋ถ€๋ถ„์—์„œ ๊ธฐ๋Šฅ๋งŒ ๋จผ์ € ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž.

 

  • ์บ์‹œ
  • ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜๋Š” ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ๋ชจ๋‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
  • ํ•„ํ„ฐ๋ง์„ ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฐ์ดํ„ฐ ์••์ถ•, ์–ธ์–ด ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅ

์ด๋Ÿฐ ๊ณตํ†ต์ ์ด ์žˆ๋Š”๋ฐ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•  Forward & Reverse๋Š” ์œ„์˜ ๊ธฐ๋Šฅ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Forward Proxy

ํ•œ ์ค„๋กœ ์š”์•ฝํ•˜์ž๋ฉด ํด๋ผ์ด์–ธํŠธ ๋Œ€์‹  ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋ƒ„ ์ด๋‹ค.


์ด Forward Proxy์— ๋Œ€ํ•ด์„œ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด ์•„๋งˆ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์„ค์ •ํ•˜๋Š” ํ”„๋ก์‹œ๋“ค์ด ๋ฐ”๋กœ ์ด ํฌ์›Œ๋“œ ํ”„๋ก์‹œ์ด๋‹ค.

 

์ด๋Ÿฐ ํฌ์›Œ๋“œ ํ”„๋ก์‹œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๋ง ๊ด€๋ฆฌ์ž๊ฐ€ ์„ค์น˜ํ•œ๋‹ค.


ํฌ์›Œ๋“œ ํ”„๋ก์‹œ์˜ ๋™์ž‘์„ ๊ธ€๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด

ํด๋ผ์ด์–ธํŠธ๊ฐ€ naver.com์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‚ฌ์šฉ์ž PC๊ฐ€ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํฌ์›Œ๋“œ ํ”„๋ก์‹œ๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ๋ฐ›์•„์„œ naver.com์— ์—ฐ๊ฒฐํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

์ด๋Ÿฐ ํฌ์›Œ๋“œ ํ”„๋ก์‹œ์—๋Š” ๋Œ€๊ฒŒ ์บ์‹ฑ ๊ธฐ๋Šฅ์ด ๊ฐ•ํ™”๋˜์–ด ์„ฑ๋Šฅ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ๋น„์šฉ์— ๋Œ€ํ•œ ๊ฐ์†Œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

Reverse Proxy

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•œ ์ค„๋กœ ์š”์•ฝํ•˜์ž๋ฉด ์„œ๋ฒ„ ๋Œ€์‹  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์Œ์ด๋‹ค.


์ด Reverse Proxy์— ๋Œ€ํ•ด์„œ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด ์•„๋งˆ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

 

์ด๋Š” ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž๋‚˜ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด์„œ ์„ค์ •๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ Nginx๋กœ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.


ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— Nginx ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ์ง์ ‘ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ๊ณผ์ •์„ ์ด์•ผ๊ธฐํ•˜์ž๋ฉด

ํด๋ผ์ด์–ธํŠธ๊ฐ€ naver.com์— ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ํ•˜๋ฉด ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ๋‚ด๋ถ€ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›์•„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.

์ด๋Ÿฐ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ IP๋งŒ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ ์ธ ์ธก๋ฉด์—์„œ ์ด๋“์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฐจ์ด์ ์„ ์ •๋ฆฌํ•ด๋ณด์ž.

Forward Proxy

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” End Point ๊ฐ€ ์‹ค์ œ ์„œ๋ฒ„ ๋„๋ฉ”์ธ์ด๊ณ  ํ”„๋ก์‹œ๋Š” ๋‘˜ ์‚ฌ์ด์˜ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•ด์ค€๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๊ฐ€ ๊ฐ์ถฐ์ง„๋‹ค.Reverse Proxy
  3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” End Point ๊ฐ€ ํ”„๋ก์‹œ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ์ด๊ณ  ์‹ค์ œ ์„œ๋ฒ„์˜ ์ •๋ณด๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค.
  4. ์„œ๋ฒ„์˜ ์ •๋ณด๊ฐ€ ๊ฐ์ถฐ์ง„๋‹ค.

์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๊ฐœ๋…๊ณผ 2๊ฐ€์ง€ ํ”„๋ก์‹œ ์ „๋žต์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค.


์ด๋ฅผ ํ†ตํ•ด์„œ ์‹ค์ œ Nginx ๋ผ๋˜์ง€ AWS์—์„œ ํ”„๋ก์‹œ๋ฅผ ์ ์šฉํ•  ๋•Œ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.


๋งŒ์•ฝ Nginx๋‚˜ AWS์—์„œ ํ”„๋ก์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํ™•์ธํ•ด๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค.

๋Œ“๊ธ€