์ ์ ๋ชจ๋ 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 |
|---|