-
NGINX module κ°λ° μ μ°Έκ³ νκΈ° μ’μ κΈTIPS 2024. 10. 13. 14:52
π NGINX λͺ¨λμ μΈμ λ§λλμ?
Nginx λ λ§μ μΉ μλΉμ€λ€μμ μ¬μ©νλ μΉ μλ² νλ‘κ·Έλ¨ μ λλ€. Nginx λ κ·Έ μμ²΄λ‘ κ°λ ₯νκ³ , λ€μν λͺ¨λμ κ°μ§κ³ μκΈ° λλ¬Έμ λ§μ μλΉμ€λ€μμ μ¬μ©λ©λλ€.
νμ§λ§ μλΉμ€μ μꡬμ¬νμ λ°λΌμ, Nginx κ·Έ μ체λ§μΌλ‘λ λΆμ‘±ν μν©μ΄ λ°μν©λλ€. μ± μλ²μμ μ²λ¦¬νκΈ°μλ μ±μ λ‘μ§κ³Όλ λλ¨μ΄μ Έμμ΄ μ± μμμΉμ μλ°νκ³ , nginx μ μ€μ λ‘μ§μμ μ²λ¦¬λλ©΄ μ’μ κ² κ°μ μꡬμ¬νλ€μ΄ μμ΅λλ€. μλ₯Ό λ€λ©΄, νλ‘μλ₯Ό ν λ νΉμ κ°μ κ°κ³΅νμ¬ λκ²¨μ£Όκ³ μΆμ μ μμ΅λλ€. λ, header μ μλ κ°μ κ°μ§κ³
$remote_addr
λ₯Ό λ³μ‘°νμ¬ μ¬μ©νκ³ μΆλ€κ±°λ νλ μν©μ΄ μμ΅λλ€.κ·Έλ° μν©μμ μ μ ν μ²λ¦¬λ₯Ό ν μ μλ nginx λͺ¨λμ μ§μ λ§λ€μ΄ nginx μ μ μ©ν΄μ€ μ μμ΅λλ€. Nginx λ C μΈμ΄λ‘ λ§λ€μ΄μ Έ μμ΄ λͺ¨λλ λ³΄ν΅ C λ‘ μμ±λ©λλ€. νμ§λ§ μ΅κ·Όμλ Lua λ‘ μμ±νκ±°λ njs (nginx μμ μ¬μ©νκΈ° μν μΌμ’ μ custom js) λ₯Ό μ¬μ©νμ¬ λͺ¨λμ΄ μμ±λκΈ°λ ν©λλ€. νμ§λ§ μ΄ κΈμμλ C μΈμ΄λ‘ Nginx λͺ¨λμ μμ±ν λ μ°Έκ³ νκΈ° μ’μ κΈλ€μ μκ°ν©λλ€.
Nginx 곡μ λ¬Έμ
> https://nginx.org/en/docs/dev/development_guide.html
곡μ λ¬Έμλ μ΄λ€ μν©μμλ μ§ μ€μν κ² κ°μ΅λλ€. μ΄λ―Έ λ§λ€μ΄μ§ νλ‘κ·Έλ¨μ λν΄μ μΆκ°λ‘ κ°λ°ν λλ μ€λͺ μλ₯Ό μμΈνκ² μ΄ν΄λ΄μΌ ν©λλ€.
곡μ λ¬Έμμμλ Nginx μμ μ¬μ©λλ μλ£νκ³Ό ꡬ쑰체, λ³μ, λ‘κ·Έ λ°©μλΆν° Nginx κ° HTTP κ΄λ ¨ μμ²μ μ²λ¦¬νλ λ°©μ λ± λ€μν λ΄μ©λ€μ΄ κΈ°λ‘λμ΄ μμ΅λλ€. λ°λΌμ λͺ¨λμ κ°λ°νλ κ²½μ°κ° μλλλΌλ, Nginx λ₯Ό κΉκ² μ΄ν΄νκ³ μΆλ€λ©΄ νλ² μ―€ μ½κ³ 곡λΆν΄λ³΄κΈ° μ’μ λ¬Έμμ λλ€. νμ§λ§ μ΄ κΈμ μ½μλ€κ³ ν΄μ λͺ¨λ κ°λ°μ μ°©μνκΈ°λ μ΄λ ΅μ΅λλ€. κ°λ° μμ μ°Έκ³ νκΈ° μ’μ νν 리μΌμ΄ λ°λ‘ μ€λΉλμ΄ μμ§λ μμ΅λλ€. μ²μ μ νλ μ¬λμ΄ μ½κΈ°μ λ€μ μ΄ν΄νκΈ° μ΄λ €μ΄ μ©μ΄λ€λ λ§μ΅λλ€. νμ§λ§ κ°λ°νλ λμ€μλ μ΄ λ¬Έμλ₯Ό κ³μ μ°Έκ³ νλ©΄μ μ½λλ₯Ό μ΄ν΄νκ³ μμ ν΄λκ°μΌν©λλ€.
NAVER D2 - NGINX λͺ¨λ μ μνκΈ°
> https://d2.naver.com/helloworld/192785
λ€μ΄λ² κΈ°μ λΈλ‘κ·Έμ μμ±λ Nginx λͺ¨λ μ μ νν λ¦¬μΌ κΈμ λλ€. μ κ° μ²μ λͺ¨λμ μ μν΄μΌλλ€κ³ νμ λ μ°Έκ³ νλ μ’μ κΈμ΄μμ΅λλ€.
2012λ μ μμ±λμ΄ μ‘°κΈμ λ¬λΌμ§ λΆλΆλ μκ² μ§λ§, ν¬κ² λ³κ²½λ μ μ΄ μκ³ μΆ©λΆν μ»΄νμΌνλλ° μ΄μκ° μμμ΅λλ€. κ·Έλ¦¬κ³ Nginx μμ λͺ¨λμ΄ κ΅¬λλλ κ°λ μ μ μ€λͺ νκ³ μκ³ , μλλΌλ ꡬλν μ μλ 컀μ€ν λͺ¨λμ λ§λ€ μ μλλ‘ μ μ€λͺ νκ³ μμ΅λλ€. λͺ¨λμ μμ±ν λ νμν μΈν°νμ΄μ€, λ³μμ νΈλ€λ¬, λͺ¨λμ 컨ν μ€νΈ λ± νμν κ°λ μ λν΄μ μμΈν μ€λͺ κ³Ό ν¨κ» μμ±ν΄λ³Ό μ μλ μ½λλ₯Ό μ 곡νμ¬ ν° λμμ΄ λμμ΅λλ€.
Evan Miller μ Nginx Modules Guide
> https://www.evanmiller.org/nginx-modules-guide.html
A/B ν μ€νΈ μν λ°μ΄ν° κ³μ°κΈ°λ‘ μ λͺ ν Evan Miller κ° μμ±ν nginx module κ°μ΄λμ λλ€. Nginx λͺ¨λμ ꡬμ±μ μ’ λ μμΈνκ² μ€λͺ ν©λλ€. κ° νλͺ©μ λν κ°λ κ³Ό ννλ₯Ό μ μ€λͺ νκ³ μμ΄, μμ£Ό μ°Έκ³ νκ³ μ¬λ¬λ² μ½μΌλ©΄μ κ°λ°ν΄λκ°μ΅λλ€. νΉν κ°λ° λ¬Έμμμ λν μΌνκ² μ€λͺ λμ§ μλ μ½λ λμ νλ¦μ μ μ€λͺ νκ³ μμ΅λλ€. Nginx λͺ¨λμ μ 체μμ λΆλΆμΌλ‘ μ€λͺ ν΄ λκ°λ λ°©μμ λͺ¨λμ μ’ λ μ½κ² μ΄ν΄ν μ μλλ‘ λμμ£Όμμ΅λλ€.
Nginx μ λ΄λΆ λͺ¨λ μ½λ
> https://github.com/nginx/nginx/tree/master/src/http/modules
μ€μ λͺ¨λμ μ¬λ‘λ₯Ό μ°Έκ³ νλ κ²μ λΉ λ₯΄κ² κ°λ°νλ λ° μ€μν©λλ€. Nginx μ½λμλ μ΄λ―Έ λ§μ λͺ¨λμ΄ κ°λ°λμ΄ ν¨κ» μ»΄νμΌλ©λλ€. μμ±λ λͺ¨λλ€μ μ°Έκ³ νλ©΄ request μ μ μ₯λμ΄ μλ λ°μ΄ν°λ₯Ό μ’ λ μ΄ν΄ ν μ μμκ³ , μ΄ν΄νκΈ° μ΄λ €μ λ ngx ꡬ쑰체λ€μ μ¬μ©νλ λ°©μμ μ°Έκ³ ν μ μμμ΅λλ€.
κΈ°ν λ€λ₯Έ Nginx λͺ¨λ λ ν¬μ§ν°λ¦¬
Nginx λͺ¨λ μ½λ λΏλ§ μλλΌ, Nginx μ¨λνν° λͺ¨λλ€λ μμ΄ κ°λ° μμ μ°Έκ³ ν΄λ³Ό μ μμμ΅λλ€.
headersmore (openresty)
user-agent (alibaba)
λ°μν'TIPS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ 보 κ²μ νκ° μ§ν ( + RAGAS) (1) 2024.10.13 μλ²μμ Client IP λ₯Ό μΆμΆνλ μ¬λ¬κ°μ§ λ°©λ² (1) 2024.10.13 Docker Image λ₯Ό λ‘컬 νμΌλ‘ μ μ₯νκΈ° (0) 2024.03.19 μ¬λ¬ μ€λ‘ ꡬμ±λ νμΌμ line-by-line loop λ‘ μ€ννκΈ° (0) 2024.03.18 νΉμ λ¬Έμμ΄μ νμΌμμ μΌκ΄ λ³κ²½νκΈ° (0) 2024.03.17