2021. 8. 24. 23:06γπ Web
λ€μ΄κ°κΈ° μ μ
λ³Έ ν¬μ€ν
μ HAProxy λ₯Ό μ€λͺ
νκΈ° μν λΉλμ
λ¨κ³λ‘,
proxy μ forward proxy, reverse proxy μ μ λ°μ μΈ λ΄μ©μ λ€λ£Ήλλ€.
Proxy λ 무μμΈκ°?
HAProxy λ₯Ό μ€λͺ
νκΈ° μ , μ°μ Proxy(νλ‘μ)μ μλ―Έλ₯Ό μμλ³΄κ² μ΅λλ€.
proxy λ λ리, λ리μΈμ΄λΌλ λ»μΌλ‘ proxy server λ λ³Έ μλ²λ₯Ό λμ νμ¬ μ΄λ€ μΌμ ννλ μλ²μμ μ μΆν μ μμ΅λλ€.
μΉμ ν΄λΌμ΄μΈνΈμμ μλ²λ‘, μλ²μμ ν΄λΌμ΄μΈνΈλ‘ ν΅μ νλ©° λ°μ΄ν°λ₯Ό μ λ¬ν©λλ€.
μ΄λ νμ°μ μΌλ‘ μ€λ³΅λλ λ°μ΄ν°λ₯Ό λ°λ³΅νμ¬ μ λ¬νλ μν©μ΄ λ°μνλλ°,
μ΄λ κ² λμΌν μμ²μ λ§€λ² μ²λ¦¬νλ κ²μ 곧 리μμ€ λλΉ μ μλ²μ λΆν λ‘ μ΄μ΄μ§λλ€.
λλ¬Έμ λ³Έ μλ²μ λλ¬νκΈ° μ μ μλ‘μ΄ μλ²(proxy server)λ₯Ό 미리 λ°°μΉνμ¬
μ€λ³΅ μμ²μ λν΄ (μ°μ°μ΄ νμμλ) λμΌν μλ΅μ ν μ μλ€λ©΄,
1) ν΄λΌμ΄μΈνΈμκ² λΉ λ₯Έ μλμ μλΉμ€λ₯Ό, 2) μλ²μκ²λ λΆνμν λΆνλ₯Ό μ€μ΄λ ν¨κ³Όλ₯Ό λΌ μ μμ΅λλ€. (λͺ¨μ’
μ μΊμν¨κ³Ό) μ΄ 2κ°μ§κ° νλ‘μ μλ²μ λνμ μΈ ν¨κ³ΌλΌκ³ ν μ μμ΅λλ€.
νλ‘μ μλ²μ μν μ΄ λλ΅μ μΌλ‘ μ΄ν΄λμλμ?
νλ‘μμ λ μ’ λ₯
νλ‘μ μλ²λ λ€νΈμν¬ μ μ΄λμ μμΉνλλ, νΉμ μ΄λ λ°©ν₯μΌλ‘ λ°μ΄ν°λ₯Ό μ 곡νλλμ λ°λΌ forward μ reverse proxy λ‘ λλ©λλ€. μ΄ 2κ°μ§μ μ°¨μ΄μ μ μμλ³΄κ² μ΅λλ€.
1. Forward Proxy
ν¬μλ νλ‘μλ, ν΄λΌμ΄μΈνΈκ° μλ²μ μμ²ν νμ΄μ§(μλ₯Ό λ€μ΄ λ€μ΄λ²) λ₯Ό νλ‘μμλ²κ° λμ λ°μμ (νΉμ μ΄λ―Έ μΊμλμ΄ κ°μ§κ³ μκ±°λ) ν΄λΌμ΄μΈνΈμκ² λ΄λ°μ΄μ£Όλ(forward) μν μ ν©λλ€.
μ 리ν΄μ λ§νμλ©΄, ν΄λΌμ΄μΈνΈ μμͺ½μΌλ‘ μ μ λ°μ΄ν°(μΊμ)λ₯Ό λ°ννλ μν μ ν©λλ€. μΌλ°μ μΌλ‘ μ¬μ©λλ νλ‘μλ ν¬μλ νλ‘μλ₯Ό μΌμ»«μ΅λλ€.
ν¬μλ νλ‘μλ λ€μκ³Ό κ°μ μ₯μ μ΄ μμ΅λλ€.
보μ Security
μ λ
κΈ° μμ μνλ μ₯λκ°μ΄ μλ€λ©΄ λκ²λ λΆλͺ¨λμ΄ μ§μ κ°κ²λ₯Ό λ°©λ¬Ένμ¬ μ°λ¦¬μκ² μ ν΄μ€λλ€. μ λ
κΈ°μΈ μ°λ¦¬λ νν μΈμμ μ§μ λκ° νμμμ΄ μμ ν κ³³μμ μνλ μ₯λκ°μ κ°μ§ μ μμ΅λλ€. νλ‘μλ λΉμ·νκ² μκ°ν μ μμ΅λλ€. νλ‘μ μλ²λ μ°λ¦¬κ° μ§μ μ₯λκ°μ μ¬λ¬ λκ° νμ μμ΄ λμ μμ§μ¬μ£Όλ μν μ ν©λλ€. μ°λ¦¬μ IP λ νλ‘μμ μν΄ κ°μΆ°μ§λ ν¨κ³Όλ₯Ό κ°μ Έ 보μμ μμ νκ² μ§μΌμ§λλ€.
μΊμ± Caching
μ°λ¦¬κ° μ΄λ€ μΉ νμ΄μ§μ μ κ·Όνλ©΄ νλ‘μ μλ²λ ν΄λΉ νμ΄μ§ μλ²μ μ 보λ₯Ό μΊμ±(μμ보κ΄)ν΄λλ€. λκ°μ΄ ν΄λΉ νμ΄μ§μ μ κ·Όνκ±°λ, λ€λ₯Έ ν΄λΌμ΄μΈνΈκ° ν΄λΉ νμ΄μ§λ₯Ό μμ²ν λ , μΊμλ μ 보(νμ΄μ§)λ₯Ό κ·Έλλ‘ λ°νν μ μκ³ , μ΄λ μλ²μ λΆνλ₯Ό μ€μ΄λ ν¨κ³Όλ λΌ μ μλ€.
μνΈν Encryption
ν΄λΌμ΄μΈνΈμ μμ²μ νλ‘μ μλ²λ₯Ό ν΅κ³Όν λ μνΈνλλ€. μνΈνλ μμ²μ λ€λ₯Έ μλ²λ₯Ό ν΅κ³Όν λ νμν μ΅μνμ μ λ³΄λ§ κ°κ² λλλ°, μ΄λ ν΄λΌμ΄μΈνΈμ ip λ₯Ό (보μμ μν΄) κ°μΆ°μ£Όλ 보μ ν¨κ³Όλ₯Ό λ
λλ€.
2. 리λ²μ€ νλ‘μ
ν¬μλλ 리λ²μ€λ νλ‘μλ μλ²μ
λλ€. μμ²μ λ°κ³ μλ΅μ νλ κ²μ΄ μλ²μ κΈ°λ³Έμ
λλ€.
ν΄λΌμ΄μΈνΈμͺ½μΌλ‘ λ°μ΄ν°(response)λ₯Ό λ°μ΄μ£Όλκ² ν¬μλλΌλ©΄, κ·Έ λ°λνΈμΈ μλ² μͺ½μΌλ‘ λ°μ΄ν°(request)λ₯Ό λ°μ΄μ£Όλ κ²μ΄ 리λ²μ€ νλ‘μ μ
λλ€.
리λ²μ€ λΌλ μ΄λ¦
리λ²μ€ λΌλ λ¨μ΄ λλ¬Έμ κ΄ν μλ°©ν₯ κ΄λ ¨ μ΄λ―Έμ§κ° λ μ€λ₯΄μ§λ§, 리λ²μ€ νλ‘μλ λ¨μ§ ν¬μλ νλ‘μμ λ°λ λ°©ν₯ μ λμ ν¨κ³Όλ₯Ό κ°μ§λ€κ³ μκ°ν΄λ³΄κ² μ΅λλ€.
ν¬μλ νλ‘μμμ ν΄λΌμ΄μΈνΈμ ip λ₯Ό μΈλΆ(outside of system)κ° μμ§ λͺ»νκ² κ°μΆ κ² μ²λΌ,
리λ²μ€ νλ‘μμμλ μλ²μ ip λ₯Ό μΈλΆ(outside of system)μμ μμ§ λͺ»νλλ‘ κ°μΆ°λ²λ¦½λλ€. μ΄λ‘μ¨ μλ²λ ν¬μλ νλ‘μμμμ ν΄λΌμ΄μΈνΈμ λμΌν 보μ/ μΊμ± ν¨κ³Όλ₯Ό κ°κ² λ©λλ€. μ΄λ° μ΄μ μμ reverse νλ‘μ λΌλ μ΄λ¦μ κ°κ² λκ²μ΄λΌ μΆμ λ©λλ€.
리λ²μ€ νλ‘μμ λ‘λ λ°Έλ°μ€
λν 리λ²μ€ νλ‘μλ λ‘λ λ°Έλ°μ± ν¨κ³Όλ κ°μ Έ μλ²μ λΆνλ κ²½κ°νλ ν¨κ³Όλ λΌ μ μμ΅λλ€. μ΄ λΆλΆμ΄ λ°λ‘ λ€μ ν¬μ€ν
μ HAProxy μ μ°κ΄λ©λλ€.
μλ² λ¨μ λ€μμ `μΉ`μλ²λ₯Ό λλ©΄, κ° μλ²λ§λ€ μ΄λ€ μμ²μ μ²λ¦¬ν μ§ λΆλ΄ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ 3κ°μ μλ²κ° μ‘΄μ¬ν λ, 1λ² μλ²λ νμ μ 보λ₯Ό λ΄λΉ, 2λ² μλ²λ νμμ΄ μμ±ν κ²μκΈμ λ΄λΉ, 3λ² μλ²λ ip μ 곡 μλΉμ€λ₯Ό λ΄λΉνλ€κ³ ν©λλ€. μ΄λ 리λ²μ€ νλ‘μλ λΆλ΄ μ§μ μν μ 맑μ κ° μλ²μ λΆνλ₯Ό μ€μ¬μ€λλ€(load balancing). μ΄μ²λΌ λ€μμ μΉμλ²κ° μμ λ, νλμ 리λ²μ€ νλ‘μλ λ€μμ μλ²μ μμ²κ³Ό μλ΅μ μ²λ¦¬ν μ μμ΅λλ€. (λͺ¨μ’
μ λ‘λλ°Έλ°μ± ν¨κ³Ό)
λ§μΉλ©°
λ μ’
λ₯μ νλ‘μλ₯Ό μ€μ¬μΌλ‘, νλ‘μμ λ΄μ©μ κ°λ΅μ μΌλ‘ λ€λ€λ΄€μ΅λλ€. μ¬μ€ μ΄ ν¬μ€ν
μ HAProxyμ λ€μ€ν μ κ΄ν μ‘°μ¬ λμ€, proxy μ κ°λ
μ΄ μ νλμ΄μΌ ν κ² κ°μ 곡λΆνκ² λμ΅λλ€. μ΄μ νλ‘μκ° μ΄λ€ κ²μΈμ§ κ°ν μ‘νμΌλ, HAProxy λ₯Ό νμΈ΅ λ μ½κ² μ΄ν΄ν λ°λ°νμ΄ κΉλ Έλ€κ³ μκ°ν©λλ€. λ€μ ν¬μ€ν
μμ HAProxy μ λν΄ μμλ³΄κ² μ΅λλ€.
reference
https://www.p3r.one/forward-reverse-proxy-servers/
https://jcdgods.tistory.com/322
'π Web' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Web Server μ WAS λ₯Ό μμ보μ (1) | 2022.12.24 |
---|---|
REST API λμμΈ 15κ°μ§ ν (0) | 2022.05.13 |
HTTP 401(Unauthorized), 403(Forbidden) μ°¨μ΄ (0) | 2021.06.20 |
7. HTTP ν€λ 2 - μΊμμ μ‘°κ±΄λΆ μμ² (2) | 2021.01.17 |
7. HTTP ν€λ 1 - μΌλ° ν€λ (0) | 2021.01.11 |