λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
BackEnd🌱/Etc

Forward Proxy와 Reverse Proxy

by μ•ˆμ£Όν˜• 2022. 4. 18.

μ„œλ‘ 

이전 κ²Œμ‹œκΈ€μ—μ„œ WebServer와 WAS에 λŒ€ν•΄μ„œ 정리λ₯Ό ν–ˆμŠ΅λ‹ˆλ‹€. μΆ”κ°€μ μœΌλ‘œ Forward Proxy와 Reverse Proxy의 κ°œλ…λ„ λ‚˜μ˜€λŠ”λ° 이번 μ‹œκ°„μ—λŠ” μ΄λŸ¬ν•œ ν”„λ‘μ‹œμ˜ κ°œλ…μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

WebServer와 WAS에 λŒ€ν•œ κ°œλ…μ€ μ•„λž˜ κ²Œμ‹œκΈ€μ—μ„œ μ •λ¦¬ν•œ 적이 μžˆμœΌλ‹ˆ μ°Έκ³ ν•˜μ‹œλ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

 

Web Server와 WAS의 차이

μ„œλ‘  μ›Ή μ„œλ²„(Web Server)와 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„(Web Application Server)의 ν‚€μ›Œλ“œλ§Œ 두고 λ³΄μ•˜μ„ λ•Œ 두 개의 차이가 뭔가에 λŒ€ν•΄ ν™•μ‹  있게 λŒ€λ‹΅μ„ λͺ»ν• λΏλ”λŸ¬ 아직 이해가 잘 가지 μ•Šμ•„μ„œ ν•œλ²ˆ 정리λ₯Ό

dkswnkk.tistory.com

λ¨Όμ € ν”„λ‘μ‹œ(Proxy)λΌλŠ” μš©μ–΄μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³  Forward Proxy와  Reverse Proxy에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. λͺ©μ°¨λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  1. ν”„λ‘μ‹œ(Proxy)λž€?
  2. ν¬μ›Œλ“œ ν”„λ‘μ‹œ(Forward Proxy)λž€?
  3. λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ(Reverse Proxy)λž€?

 

1. ν”„λ‘μ‹œ(Proxy)λž€?

ν”„λ‘μ‹œμ˜ 사전적 μ˜λ―ΈλŠ” 'λŒ€λ¦¬', 'λŒ€μ‹ 'μž…λ‹ˆλ‹€. λ³΄μ•ˆμƒμ˜ 문제둜 직접 톡신을 주고받을 수 μ—†λŠ” 두 PC μ‚¬μ΄μ—μ„œ 톡신을 ν•  λ•Œ 직접 ν•˜μ§€ μ•Šκ³  μ€‘κ°„μ—μ„œ λŒ€λ¦¬λ‘œ 쀑계λ₯Ό ν•˜λŠ” κ°œλ…μ„ 'ν”„λ‘μ‹œ'라고 ν•©λ‹ˆλ‹€.

그리고 μ΄λ ‡κ²Œ 쀑계 κΈ°λŠ₯을 ν•˜λŠ” 것을 'ν”„λ‘μ‹œ μ„œλ²„'라고 λΆ€λ¦…λ‹ˆλ‹€.

인터넷 - ν”„λ‘μ‹œ μ„œλ²„ - 인터넷

ν”„λ‘μ‹œ μ„œλ²„λŠ” μ„œλ²„κ°€ 어디에 μœ„μΉ˜ν•˜λŠλƒμ— 따라 ν¬μ›Œλ“œ ν”„λ‘μ‹œμ™€ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλ‘œ λ‚˜λ‰©λ‹ˆλ‹€. 각각의 경우 μœ„μΉ˜λΏλ§Œ μ•„λ‹ˆλΌ μš©λ„μ™€ 역할도 μ„œλ‘œ λ‹¬λΌμ§€λŠ”λ° ν•œλ²ˆ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

2. ν¬μ›Œλ“œ ν”„λ‘μ‹œ(Forward Proxy)

ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν•  λ•Œ 직접 μš”μ²­ν•˜μ§€ μ•Šκ³  ν”„λ‘μ‹œ μ„œλ²„λ₯Ό κ±°μ³μ„œ μš”μ²­ν•©λ‹ˆλ‹€. 이 경우 μ„œλ²„μ—μ„œ λ°›λŠ” IPλŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ IPκ°€ μ•„λ‹Œ ν”„λ‘μ‹œ μ„œλ²„μ˜ IP이기 λ•Œλ¬Έμ— μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ λˆ„κ΅¬μΈμ§€ μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ„œλ²„μ—κ²Œ ν΄λΌμ΄μ–ΈνŠΈκ°€ λˆ„κ΅¬μΈμ§€ κ°μΆ°μ£ΌλŠ” 역할을 ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μ‚¬μš©μžκ°€ google.com 에 μ—°κ²°ν•˜λ €κ³  ν•˜λ©΄ μ‚¬μš©μž PC κ°€ 직접 μ—°κ²°ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„κ°€ μš”μ²­μ„ λ°›μ•„μ„œ  google.com 에 μ—°κ²°ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— 전달(forward) ν•΄ μ€λ‹ˆλ‹€.

ν¬μ›Œλ“œ ν”„λ‘μ‹œλŠ” λŒ€κ°œ 캐싱 κΈ°λŠ₯이 μžˆμœΌλ―€λ‘œ 자주 μ‚¬μš©λ˜λŠ” 컨텐츠라면 μ›”λ“±ν•œ μ„±λŠ₯ ν–₯상을 κ°€μ Έμ˜¬ 수 있으며 정해진 μ‚¬μ΄νŠΈλ§Œ μ—°κ²°ν•˜κ²Œ μ„€μ •ν•˜λŠ” λ“± μ›Ή μ‚¬μš© ν™˜κ²½μ„ μ œν•œν• μˆ˜ μžˆμœΌλ―€λ‘œ λ³΄μ•ˆμ΄ 맀우 μ€‘μš”ν•œ κΈ°μ—… ν™˜κ²½λ“±μ—μ„œ 많이 μ‚¬μš©ν•©λ‹ˆλ‹€.

ν¬μ›Œλ“œ ν”„λ‘μ‹œ(Forward Proxy)
ν¬μ›Œλ“œ ν”„λ‘μ‹œ(Forward Proxy)

  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ μš”μ²­ν•  λ•Œ 직접 μ„œλ²„μ— μ ‘κ·Όν•˜μ§€ μ•Šκ³  ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„μ—κ²Œ μš”μ²­ν•˜λ©΄ ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„κ°€ ν•΄λ‹Ή μ„œλ²„μ—κ²Œ μ ‘κ·Όν•˜μ—¬ μš”μ²­μ„ μ „λ‹¬ν•˜κ³  κ²°κ³Όλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „λ‹¬ν•΄μ£ΌλŠ” 방식.
  • ν¬μ›Œλ“œ ν”„λ‘μ‹œλŠ” μΊμ‹œ κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μΊμ‹œ μ„œλ²„λ‘œ ν™œμš©ν•˜μ—¬ μ„±λŠ₯을 ν–₯상할 수 있음.
  • 자주 μ‚¬μš©λ˜λŠ” μžμ›μ„ μΊμ‹œμ— μ €μž₯해놓기 λ•Œλ¬Έμ— ν•΄λ‹Ή μžμ› μš”μ²­μ΄ μ˜¨λ‹€λ©΄ μ„œλ²„μ—κ²Œ 갈 ν•„μš” 없이 ν”„λ‘μ‹œ μ„œλ²„ μžμ²΄μ—μ„œ μ²˜λ¦¬κ°€ κ°€λŠ₯.
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ₯Ό 직접 μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— μ ‘κ·Ό κ°€λŠ₯ν•œ μ‚¬μ΄νŠΈλ₯Ό μ œν•œν•  수 μžˆμœΌλ―€λ‘œ λ³΄μ•ˆμ„ ν–₯상할 수 있음.
  • 즉, ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„λ₯Ό μ•Œμ§€λ§Œ, μ„œλ²„λŠ” ν”„λ‘μ‹œλ₯Ό 톡해 μš”μ²­μ΄ 였기 λ•Œλ¬Έμ— ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ•Œμ§€ λͺ»ν•¨.

3. λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ(Reverse Proxy)

λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλŠ” ν¬μ›Œλ“œ ν”„λ‘μ‹œμ™€ λ°˜λŒ€ κ°œλ…μž…λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ˜ μ•žμ— μœ„μΉ˜ν•˜λ©° ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ₯Ό μš”μ²­ν•  λ•Œ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλ₯Ό ν˜ΈμΆœν•˜κ³  λ¦¬λ²„μŠ€ ν”„λ‘μ‹œκ°€ μ„œλ²„λ‘œλΆ€ν„° 응닡을 전달받아 λ‹€μ‹œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „μ†‘ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

이 경우, ν΄λΌμ΄μ–ΈνŠΈλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„λ₯Ό 직접 ν˜ΈμΆœν•˜λŠ” 것이 μ•„λ‹ˆλΌ μ„œλ²„λ₯Ό 톡해 ν˜ΈμΆœν•˜κΈ° λ•Œλ¬Έμ— λ¦¬λ²„μŠ€ ν”„λ‘μ‹œλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„λ₯Ό κ°μΆ”λŠ” 역할을 ν•˜κ²Œ λ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ λ¦¬λ²„μŠ€ ν”„λ½μ‹œλ‘œ μ›Ή μ„œλ²„λ₯Ό μ„€μ •ν•  경우 μ‚¬μš©μžκ°€ example.com μ›Ή μ„œλΉ„μŠ€μ— 데이타λ₯Ό μš”μ²­ν•˜λ©΄ Reverse Proxy λŠ” 이 μš”μ²­μ„ λ°›μ•„μ„œ λ‚΄λΆ€ μ„œλ²„(보톡 WAS μž…λ‹ˆλ‹€)μ—μ„œ 데이터λ₯Ό 받은후에 이 데이터λ₯Ό μ‚¬μš©μžμ—κ²Œ λ‹€μ‹œ μ „λ‹¬ν•˜κ²Œ λ©λ‹ˆλ‹€.

λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ(Reverse Proxy)

  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ μš”μ²­ν•  λ•Œ 직접 μ„œλ²„μ— μ ‘κ·Όν•˜μ§€ μ•Šκ³  λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„κ°€ 이 μš”μ²­λ“€μ„ λ°›μ•„μ„œ λ‚΄λΆ€ μ„œλ²„μ— μ ‘κ·Όν•˜μ—¬ μš”μ²­μ„ μ „λ‹¬ν•˜κ³  κ²°κ³Όλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „λ‹¬ν•΄μ£ΌλŠ” 방식
  • λ§ˆμ°¬κ°€μ§€λ‘œ ν΄λΌμ΄μ–ΈνŠΈλŠ” λ‚΄λΆ€ μ„œλ²„λ₯Ό μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— λ³΄μ•ˆκ³Ό μ„±λŠ₯을 ν–₯상할 수 μžˆλ‹€.
  • μ—¬λŸ¬ 개의 λ‚΄λΆ€ μ„œλ²„λ₯Ό λ‘˜ 수 있기 λ•Œλ¬Έμ— λ‘œλ“œ λ°ΈλŸ°μ‹±μ΄λ‚˜ μ„œλ²„ ν™•μž₯을 톡해 νŠΈλž˜ν”½μ„ λΆ„μ‚°μ‹œν‚¬ 수 μžˆλ‹€.
  • ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„μ™€λŠ” λ°˜λŒ€λ‘œ λ‚΄λΆ€ μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ•Œμ§€λ§Œ, ν΄λΌμ΄μ–ΈνŠΈλŠ” ν”„λ‘μ‹œλ₯Ό 톡해 λ‚΄λΆ€ μ„œλ²„λ₯Ό μ ‘κ·Όν•˜κΈ° λ•Œλ¬Έμ— λ‚΄λΆ€ μ„œλ²„λ₯Ό μ•Œμ§€ λͺ»ν•œλ‹€.

 

μ°Έκ³ 

λŒ“κΈ€