ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Forward Proxy, Reverse Proxy κ°œλ… 정리해보기
    Hello, World πŸ’»/Dev Research πŸ“š 2020. 9. 2. 23:03

    μ΅œκ·Όμ— μ–΄λ–€ ν”„λ‘œμ νŠΈ λ¬Έμ„œμ˜ μ‹œμŠ€ν…œ ꡬ성도λ₯Ό 보닀가 Nginx κ·Έλ¦Ό μ˜†μ— 'Reverse Proxy' λΌλŠ” 단어λ₯Ό λ°œκ²¬ν–ˆλ‹€.

    μ²˜μŒμ—” λͺ¨λ₯΄λŠ” λ‹¨μ–΄μ—¬μ„œ κ°€λ²Όμš΄ 마음으둜 μ•Œμ•„λ΄μ•Όμ§€ ν–ˆλŠ”λ° μ•Œκ³  λ³΄λ‹ˆ 전체 ꡬ성도λ₯Ό μ’€ 더 깊이 이해할 수 μžˆλŠ” μ€‘μš”ν•œ ν‚€μ˜€λ˜ 것 κ°™λ‹€.


     Proxy ?! 

    λ¨Όμ €, ν”„λ‘μ‹œμ— λŒ€ν•΄ 정리해보면 μ’‹κ² λ‹€. ν”„λ‘μ‹œλΌλŠ” λ‹¨μ–΄λŠ” λ„€νŠΈμ›Œν¬μ—μ„œλ„ 쓰이고, κ°œλ°œμ„ ν•  λ•Œμ—λ„ 많이 μ“°μ΄λŠ” 단어닀. μ—¬κΈ°μ„œλŠ” λ„€νŠΈμ›Œν¬ μƒμ—μ„œμ˜ ν”„λ‘μ‹œλΌλŠ” λœ»μ— 집쀑. (사싀 μ—­ν• κ³Ό κ°œλ…μ€ λΉ„μŠ·λΉ„μŠ·ν•˜λ‹€;)

     

    μœ„ν‚€ λ°±κ³Όλ₯Ό 참고해보면 'ν”„λ‘μ‹œ' λŠ” μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ ν”„λ‘μ‹œ μ„œλ²„λ₯Ό 톡해 λ‹€λ₯Έ λ„€νŠΈμ›Œν¬μ— κ°„μ ‘μ μœΌλ‘œ 접속할 수 있게 ν•΄μ£ΌλŠ” 컴퓨터 μ‹œμŠ€ν…œμ΄λ‚˜ ν”„λ‘œκ·Έλž¨μ„ λ§ν•œλ‹€. μ΄ 역할을 지칭해 ν”„λ‘μ‹œλΌκ³  ν•˜κ³ , 컴퓨터 μ‹œμŠ€ν…œμ΄λ‚˜ ν”„λ‘œκ·Έλž¨μ„ 보고 ν”„λ‘μ‹œ μ„œλ²„λΌκ³  λΆ€λ₯Έλ‹€. 

     

    ν”„λ‘μ‹œ μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­(Request)을 μ„œλ²„μ— μ „μ†‘ν•˜κ³ , μ„œλ²„λ‘œλΆ€ν„°μ˜ 응닡(Response)을 ν΄λΌμ΄μ–ΈνŠΈμ— λ°˜ν™˜ν•˜λŠ” 것이닀.

     

    μ—¬κΈ°κΉŒμ§€λŠ” 이미 μ•Œκ³  μžˆμ—ˆλ˜ κ°œλ…μ΄λ‹€. 그럼 Forward, Reverse κ°€ 뢙은 ProxyλŠ” 뭘까?

     

     Proxy 의 효용 

    λ„˜μ–΄κ°€κΈ° 전에 Proxyλ₯Ό μ™œ μ“°λŠ”μ§€ μ•Œμ•„λ³΄λ©΄ μ’‹κ² λ‹€. κ·Έλƒ₯ 직접 μš”μ²­μ„ 보내지 μ™œ ν”„λ‘μ‹œ μ„œλ²„λ₯Ό κ±°μ³μ„œ μš”μ²­μ„ 보내고, λ°›κ³  이럴까?

     

    캐싱 (Caching) μ„ ν•  수 μžˆλ‹€.

     

    ν”„λ‘μ‹œ μ„œλ²„λŠ” 같은 λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μš”μ²­μ΄ μ˜€λŠ” 경우 본래의 μ„œλ²„μ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό νšλ“ν•˜λŠ” 것이 μ•„λ‹ˆλΌ μ €μž₯ν•˜κ³  있던 λ¦¬μ†ŒμŠ€λ₯Ό λ¦¬μŠ€ν°μŠ€λ‘œμ„œ 되돌렀 쀄 수 μžˆλ‹€.

     

    전솑, 응닡 μ‹œκ°„λ„ μ ˆμ•½ν•˜κ³ , λΆˆν•„μš”ν•˜κ²Œ μ™ΈλΆ€μ™€μ˜ 연결을 ν•˜μ§€ μ•Šμ•„λ„ λΌμ„œ λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½λ„ 쀄일 수 μžˆλ‹€.

    μ΄λŠ” μžμ—°μŠ€λŸ½κ²Œ μ„œλ²„μ˜ λ‘œλ“œ κ°μ†ŒλΌλŠ” 이점도 주게 λœλ‹€.

     

    μ ‘κ·Ό (Access) μ œν•œμ„ ν•  수 μžˆλ‹€.

     

    쑰직 λ‚΄μ—μ„œ νŠΉμ • μ›Ή μ‚¬μ΄νŠΈμ— λŒ€ν•œ 접근을 μ œν•œν•˜κ±°λ‚˜, μ—‘μ„ΈμŠ€ 둜그λ₯Ό νšλ“ν•˜λŠ” 정책을 잘 μ§€ν‚€λ €λŠ” λͺ©μ μœΌλ‘œ μ‚¬μš©ν•œλ‹€. μ ‘κ·Ό μ œν•œμ„ ν•  수 μžˆμœΌλ―€λ‘œ λ‹Ήμ—°νžˆ λ³΄μ•ˆμ— λŒ€ν•œ μž₯점도 μžˆμ„ 것 κ°™λ‹€.

     

    λ‹€λ₯Έ μ΄μœ λ“€μ€ μ•„λž˜μ—μ„œ 더 μ•Œμ•„λ³΄μž.

     

     Forward Proxy 

    Forward Proxy, ν¬μ›Œλ“œ ν”„λ‘μ‹œκ°€ 일반적으둜 μ•Œκ³  μžˆλŠ” Proxy의 κ°œλ…μ΄λ‹€. Proxy 라고만 μ“΄λ‹€λ©΄ ν¬μ›Œλ“œ ν”„λ‘μ‹œλ₯Ό λœ»ν•˜κ³ , λ‹€λ₯Έ κ°œλ…κ³Ό ꡬ뢄할 λ•Œ Forward λ₯Ό λΆ™μ—¬ μ‚¬μš©ν•˜λŠ” 것 κ°™λ‹€.

     

    λ‹€μ‹œ μ‚΄νŽ΄λ³΄λ©΄, ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ‹€μ œ (Origin) μ„œλ²„ 쀑간에 μžˆλŠ” μ„œλ²„λ‹€. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œλŠ” μ–΄λ–€ 정보λ₯Ό λ°›κΈ° μœ„ν•΄μ„œ μ‹€μ œ μ„œλ²„μ˜ μ£Όμ†Œλ‘œ μƒμ„±λœ μš”μ²­(Request)을 ν”„λ‘μ‹œ μ„œλ²„λ‘œ 보낸닀. ν”„λ‘μ‹œ μ„œλ²„λŠ” μ‹€μ œ μ„œλ²„λ‘œ μš”μ²­μ„ 보내고 응닡을 λ°›μ•„μ„œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ°˜ν™˜ν•œλ‹€. ν”„λ‘μ‹œ μ„œλ²„λŠ” μ€‘λ³΅λœ μš”μ²­μ— λŒ€ν•΄μ„œλŠ” λ¦¬μ†ŒμŠ€ 변경이 없을 μ‹œ λ¦¬μ†ŒμŠ€λ₯Ό μΊμ‹±ν•˜κ³  μžˆλ‹€κ°€ λ°˜ν™˜ν•˜κΈ°λ„ ν•œλ‹€.

     

    참고둜 ν΄λΌμ΄μ–ΈνŠΈλŠ” 미리 ν”„λ‘μ‹œ μ„œλ²„μ˜ μ£Όμ†Œλ₯Ό μ•Œμ•„μ•Ό ν•˜κ³  μ €μž₯해둬야 ν•œλ‹€.

     

    ν¬μ›Œλ“œ ν”„λ‘μ‹œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ λͺ©μ μ§€μ— 직접 μ ‘κ·Όν•˜μ§€ μ•Šκ³  κ°„μ ‘μ μœΌλ‘œ ν”„λ‘μ‹œ μ„œλ²„λ₯Ό 톡해 ν†΅μ‹ ν•˜κ²Œ ν•œλ‹€. κ°„μ ‘μ μœΌλ‘œ 톡신을 ν•˜κΈ° λ•Œλ¬Έμ— ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„λŠ” λ°©ν™”λ²½ 등에 μ˜ν•΄ μ œν•œλ˜λŠ” λ‚΄λΆ€(Inner) λ„€νŠΈμ›Œν¬μ— 인터넷 접속을 μ œκ³΅ν•˜λŠ” 역할을 ν•˜κΈ°λ„ ν•œλ‹€.

     

    ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„λ₯Ό 톡해 μ–΄λ–€ μž„μ˜μ˜ μ‚¬μ΄νŠΈμ— 접속을 ν•  수 있기 λ•Œλ¬Έμ—, ν”„λ‘μ‹œ μ„œλ²„μ—λŠ” λ°˜λ“œμ‹œ μΈκ°€λœ μ‚¬μš©μžλ§Œ μ ‘κ·Όν•˜λ„λ‘ μ„€μ •ν•˜λŠ” 것은 ν•„μˆ˜μ΄λ‹€. λ‹Ήμ—°νžˆ Origin μ„œλ²„μ˜ λ³΄μ•ˆ 섀정도 μ€‘μš”ν•˜λ‹€.

     

     

     

    ν—ˆμ ‘ν•œ κ·Έλ¦Όμ΄μ§€λ§Œ μ—¬κΈ°μ„œ Reverse Proxy μ™€μ˜ 비ꡐλ₯Ό μœ„ν•΄ 잘 보고 λ„˜μ–΄κ°€μ•Ό ν•˜λŠ” 뢀뢄은 ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‹€μ œ μ„œλ²„μ˜ μ£Όμ†Œ (awesomeservice.com)둜 μš”μ²­μ„ ν•˜κ³  μžˆλ‹€λŠ” 것이닀.

     

     Reverse Proxy 

    λ°˜λŒ€λ‘œ Reverse Proxy, λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„λŠ” μ‚¬μš©μžμ—κ²Œ μ‹€μ œ μ›Ή μ„œλ²„μΈ κ²ƒμ²˜λŸΌ 보인닀. 사싀은 ν”„λ‘μ‹œ μ„œλ²„μΈλ°, Origin μ„œλ²„μ²˜λŸΌ λ³΄μ—¬μ„œ μ‚¬μš©μžλ“€μ€ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„ μ£Όμ†Œλ‘œ μš”μ²­μ„ 보낸닀.

     

    ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„λŠ” μœ„μ—μ„œ λ§ν•œ κ²ƒμ²˜λŸΌ μ–΄λ–€ 정보λ₯Ό μš”μ²­ν•˜κΈ° μœ„ν•΄ μ‹€μ œ Origin μ„œλ²„μ˜ μ£Όμ†Œλ‘œ μš”μ²­ (Request)을 λ§Œλ“€μ–΄ ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„λ‘œ 보낸닀고 ν–ˆλ‹€. λ°˜λŒ€λ‘œ, λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„λ₯Ό μ‚¬μš©ν•  땐 λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„μ˜ μ£Όμ†Œλ‘œ μš”μ²­μ„ λ§Œλ“€μ–΄ 보낸닀. λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„κ°€ μ£Όμ†Œλ₯Ό λΆ„μ„ν•΄μ„œ μ‹€μ œλ‘œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜κ³  μžˆλŠ” μ„œλ²„λ‘œ μš”μ²­μ„ μ „λ‹¬ν•œλ‹€.

     

    말둜 ν•˜λ‹ˆ μ–΄λ €μš΄λ° 그림으둜 보면 이해가 λΉ λ₯Ό 것 κ°™λ‹€.

     

    λΆ€λ„λŸ¬μš΄ κ·Έλ¦Ό..

     

     

    μ‚¬μš©μžλŠ” user.awesomeservice.com μ£Όμ†Œλ‘œ μš”청을 μƒμ„±ν•΄μ„œ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„μ— 보내면, ν”„λ‘μ‹œ μ„œλ²„λŠ” μ£Όμ†Œλ₯Ό λΆ„μ„ν•΄μ„œ ν•΄λ‹Ή μ£Όμ†Œλ‘œ μš”μ²­λœ μž‘μ—…μ„ λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” μ›Ή μ„œλ²„μ— μš”μ²­μ„ μ „λ‹¬ν•œλ‹€. ν”„λ‘μ‹œ μ„œλ²„λŠ” 응닡을 λ°›κ³  마치 ν”„λ‘μ‹œ μ„œλ²„κ°€ 일을 ν•œ κ²ƒμ²˜λŸΌ 리슀폰슀λ₯Ό λ°˜ν™˜ν•œλ‹€.

     

    λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„λŠ”

    • μ—¬λŸ¬ λ°±μ—”λ“œ μ„œλ²„μ˜ Loadλ₯Ό λΆ„μ‚°μ‹œν‚¬ 수 μžˆλ‹€.
    • 응닡이 느린 μ„œλ²„λ₯Ό μœ„ν•΄ 캐싱을 ν•˜κΈ°λ„ ν•œλ‹€.
    • awesomeservice.com 처럼 μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„ μ£Όμ†Œλ₯Ό ν•˜λ‚˜μ˜ URL 둜 보이게 ν•˜κΈ° μœ„ν•΄μ„œλ„ μ‚¬μš©λœλ‹€.

    λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„μ˜ 'λ³΄μ•ˆ' μ΄λΌλŠ” 역할도 크닀. 예λ₯Ό λ“€λ©΄ WAS λ₯Ό λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„μ²˜λŸΌ κ°€μž₯ μ•ž 단에 놓고 μš΄μ˜μ„ ν•˜λ‹€κ°€ ν•΄λ‹Ή μ„œλ²„κ°€ 해킹을 λ‹Ήν•˜λŠ” 경우 DB μ„œλ²„λ„ ν•¨κ»˜ 해킹을 λ‹Ήν•  ν™•λ₯ μ΄ λ†’λ‹€κ³  ν•œλ‹€. 이런 이유둜 κ°€μž₯ μ•žμ— λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„λ₯Ό 두고 μ‹€μ œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ‹΄λ‹Ήν•˜λŠ” μ„œλ²„λ“€μ€ λ‚΄λΆ€ 망에 μœ„μΉ˜μ‹œν‚€κΈ°λ„ ν•˜λŠ” 것 κ°™λ‹€.

     

    μ›Ή μ„œλ²„ ν•œ λŒ€κ°€ ν¬μ›Œλ“œ ν”„λ‘μ‹œ μ„œλ²„λ„, λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„œλ²„λ„ 될 수 μžˆλ‹€κ³  ν•œλ‹€. λŒ€ν‘œμ μΈ μ›Ή μ„œλ²„μΈ Apache, Nginx λͺ¨λ‘ 이런 ν”„λ‘μ‹œ 섀정을 ν•  수 μžˆλ‹€.


     

     References 

     

    https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%EC%84%9C%EB%B2%84

    https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%B2%84%EC%8A%A4_%ED%94%84%EB%A1%9D%EC%8B%9C

    https://brownbears.tistory.com/191

    http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

    https://jcdgods.tistory.com/322

    http://blog.naver.com/PostView.nhn?blogId=alice_k106&logNo=221190043948&categoryNo=22&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=&from=postList&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=1

     

     

    ν˜Ήμ‹œ λ‚΄μš©μ΄ 잘λͺ»λ˜μ—ˆκ±°λ‚˜, 더 μ„€λͺ…ν•  것듀이 있으면 λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ„Έμš”. πŸ™‹‍♂️

     

Designed by Tistory.