-
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
νΉμ λ΄μ©μ΄ μλͺ»λμκ±°λ, λ μ€λͺ ν κ²λ€μ΄ μμΌλ©΄ λκΈλ‘ μλ €μ£ΌμΈμ. πβοΈ