μ μ λͺ¨λ vs λμ λͺ¨λ
μ μ λͺ¨λ: Nginx μ»΄νμΌ μ μμ€μ½λμ ν¬ν¨λμ΄ ν¨κ» λΉλλλ©°, νμ λ©λͺ¨λ¦¬μ λ‘λλμ΄ μμ΄μ μ¬μ©νμ§ μμλ 리μμ€λ₯Ό μ°¨μ§νλ€. μ μ λͺ¨λμ μ μ© μ 무μ€λ¨μ΄ λΆκ°λ₯νλ€.
λμ λͺ¨λ: λ³λμ .so νμΌλ‘ μ»΄νμΌλμ΄ νμν λλ§ λ‘λνλ©° μ μ°μ±μ΄ λκ³ λ©λͺ¨λ¦¬ ν¨μ¨μ μ΄λ€. λμ λͺ¨λμ μ μ© μ 무μ€λ¨μ΄ κ°λ₯νλ€.
λμ λͺ¨λ μμ
- ngx_http_image_filter_module: μ΄λ―Έμ§ μ²λ¦¬
- ngx_http_geoip_module: IP κΈ°λ° μ§λ¦¬ μ 보
- ngx_http_xslt_module: XML/XSLT λ³ν
- ngx_stream_module: TCP/UDP λ‘λλ°Έλ°μ±
- ngx_http_perl_module: Perl μ€ν¬λ¦½νΈ μ€ν
so νμΌμ λκΉ?
.so νμΌμ Shared Object νμΌμ΄λ©°, 리λ μ€/μ λμ€ μμ€ν μμ μ¬μ©νλ λμ λ§ν¬ λΌμ΄λΈλ¬λ¦¬(Dynamic Link Library) νμΌμ΄λ€. λμ λͺ¨λ μ΅μ’ νμΌμ΄λΌκ³ 보면 λλ€.
λμ λͺ¨λμ μ₯μ
- λ°νμμ λ‘λ: νλ‘κ·Έλ¨ μ€ν μ€μ νμν λ λ©λͺ¨λ¦¬μ μ μ¬
- μ½λ 곡μ : μ¬λ¬ νλ‘κ·Έλ¨μ΄ λμΌν .so νμΌμ 곡μ ν΄μ μ¬μ© κ°λ₯
- λ©λͺ¨λ¦¬ ν¨μ¨: μ€λ³΅ μ½λλ₯Ό λ©λͺ¨λ¦¬μ ν λ²λ§ λ‘λ
- λ 립μ μ λ°μ΄νΈ: λ©μΈ νλ‘κ·Έλ¨ μ¬μ»΄νμΌ μμ΄ λΌμ΄λΈλ¬λ¦¬λ§ κ΅μ²΄ κ°λ₯
- 무μ€λ¨ λ°°ν¬ κ°λ₯
1. λμ λͺ¨λ μμ€ λ€μ΄λ‘λ
nginx versionμ νμΈν΄μ μ΄μ λ§λ λͺ¨λ μμ€μ½λλ₯Ό λ€μ΄λ°μ μλ²μ μ λ‘λ ν λ€ νμΌμ μμΆμ νΌλ€.
λλ nginx versionμ΄ 1.28μ΄λΌμ ν΄λΉ tar.gz νμΌμ λ€μ΄λ°μλ€. (λ²μ μ΄ λ§μ§ μλλ€λ©΄ nignx -tμμ μ€λ₯ λ°μνκΈ°μ λ²μ νμΈ νμ!)
C νμΌ(.c)κ³Ό ν€λ νμΌ(.h), config νμΌ λ±μΌλ‘ ꡬμ±λμ΄ μλ€.
곡μ λ€μ΄λ‘λ μ¬μ΄νΈ: https://nginx.org/download/
tar -xzvf nginx-1.28.0.tar.gz
2. λμ λͺ¨λ λΉλ
λμ λͺ¨λμ λΉλν λ κ°μ’ μ€λ₯κ° λλλ° λ³΄ν΅ μμ‘΄μ± λΌμ΄λΈλ¬λ¦¬κ° μ€μΉλμ΄μμ§ μμ μ€λ₯κ° λ°μνλ€.
μ΄λ€ λͺ¨λμΈμ§μ λ°λΌ νμν μμ‘΄μ± λΌμ΄λΈλ¬λ¦¬λ κ°κ° λ€λ₯΄λ©°, μ€λ₯ 문ꡬμμ λμ€λ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉνλ©΄ λλ€.
# Nginx μμ€ λλ ν λ¦¬λ‘ μ΄λ
cd /usr/local/src/nginx-1.28.0
# configure μ€ν (λμ λͺ¨λ μΆκ°)
# μμ‘΄μ± λΌμ΄λΈλ¬λ¦¬ μ€μΉκ° λͺ¨λ μλ£λμ΄μΌ μ€λ₯μμ΄ μ€ν κ°λ₯
./configure --with-compat --with-http_xslt_module=dynamic
# λͺ¨λμ λ°λΌ μ€ν λ¬Έλ² νμΈ
./configure --help | grep {λͺ¨λλͺ
}
# λͺ¨λλ§ λΉλ
# μ΄ λͺ
λ ΉμΌλ‘ .so νμΌ(곡μ λΌμ΄λΈλ¬λ¦¬)μ΄ μμ±
# λΉλλ .so νμΌμ objs/ λλ ν 리μ μμ±
make modules
# λΉλλ .so νμΌμ λͺ¨λ λλ ν λ¦¬λ‘ λ³΅μ¬
# λͺ¨λμ λΉλνλ©΄ nginx-1.28.0/objs λλ ν 리 λ°μ so νμΌμ΄ μμ±λλ€.
cp objs/ngx_http_geoip2_module.so /usr/lib64/nginx/modules/
β λμ λͺ¨λ λΉλ μ΅μ μ€λͺ
./configure
Nginx λΉλ νκ²½μ μ€μ νλ μ€ν¬λ¦½νΈμ λλ€. Makefileμ /usr/local/src/nginx-1.28.0 λλ ν 리 μμ μμ±ν©λλ€.
--with-compat
νΈνμ± λͺ¨λ νμ±ν
- Nginx λ°μ΄λ리μ λμ λͺ¨λ κ°μ ABI(Application Binary Interface) νΈνμ±μ 보μ₯ ( μ΄λ―Έ μ€μΉλ Nginxμ λμ€μ λμ λͺ¨λλ§ λ°λ‘ μΆκ°ν λ νμ μ΅μ )
- μ΄κ² μμΌλ©΄ λͺ¨λμ΄ μ λλ‘ λ‘λλμ§ μμ μ μμ
--with-http_xslt_module=dynamic
XSLT λͺ¨λμ λμ λͺ¨λλ‘ λΉλ
- λͺ¨λμ λ°λΌμ --with-{λͺ¨λλͺ }=dynamic νμ
- --with-http_xslt_module: XSLT λͺ¨λ ν¬ν¨
- =dynamic: μ μ μ΄ μλ λμ λͺ¨λ(.so νμΌ)λ‘ λΉλνλΌλ μλ―Έ
- =dynamicμ μ λΆμ΄λ©΄ μ μ λͺ¨λλ‘ μ»΄νμΌλλ©°, make modulesμ΄ μ λ¨Ήνκ³ , so νμΌλ μ λ§λ€μ΄μ§λ€.
3. λͺ¨λ λ‘λ λ° μ¬μ©
# nginx.conf νμΌ μμ
vi /etc/nginx/nginx.conf
# nginx.conf νμΌ μ΅μλ¨μ μΆκ°
# λͺ¨λμ μ¬μ©νκΈ° μν¨
include /usr/share/nginx/modules/*.conf;
/usr/share/nginx/modules/ μμ conf νμΌμ λ§λ€μ΄μ λͺ¨λμ λ‘λνλ€.
# conf νμΌ μμ± ν νμΌ μμ load_module μΆκ°
vi /usr/share/nginx/modules/mod-http-image-filter.conf
# νμΌ μμ μΆκ°
load_module "/usr/lib64/nginx/modules/ngx_http_image_filter_module.so";
4. μ€μ νμΈ λ° μ¬μμ
# μ€μ νμΌ λ¬Έλ² κ²μ¬
nginx -t
# Nginx μ¬μμ (무μ€λ¨)
systemctl reload nginx
μ€μ νμΌ λ¬Έλ² κ²μ¬ μ, μλμ κ°μ΄ OKμ successfulμ νμΈνλ€λ©΄ μ¬μμνλ€.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
μ μ /λμ μ λ°λ₯Έ Nginx μ¬μμ λ°©λ²
# μ μ λͺ¨λ: Nginx λ°μ΄λ리 μμ²΄κ° κ΅μ²΄λλ―λ‘ μ¬μμ νμ (μ€μ§ λ°μ)
systemctl restart nginx
# λμ λͺ¨λ: .so νμΌλ§ κ΅μ²΄ ν reloadλ§μΌλ‘ κ°λ₯ (무μ€λ¨)
systemctl reload nginx'Server > Nginx' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| Nginx μλ² config νμΌ μμ보기 (λ©μΈ, μλΉμ€ μ€μ ) (1) | 2026.01.24 |
|---|