Daha önce gördüğümüz gibi, NGINX’in işlevselliği, işlevselliğe (rewrites, SSL, auth_basic, vb.) Dayalı olarak modüllere ayrılmıştır. Bu videoda NGINX’in modül sisteminin nasıl çalıştığını inceleyeceğiz.
Dinamik ve Yerleşik Modüller
Şimdiye kadar, zaten yerleşik olan modülleri kullanıyorduk, ancak bu, tüm modüllerin yerleşik olduğu anlamına gelmiyor. NGINX 1.9.11’den itibaren, yapılandırma yüklendiğinde yüklenebilen ve NGINX ikili dosyasının yeniden derlenmesini gerektirmeyen dinamik modüller vardır. Bu değişiklik, NGINX’in daha esnek olmasını sağlar ve NGINX çekirdek paketi, henüz yüklemediğimiz bazı dinamik modüller paketlenmiş olarak gelir.
NGINX’i kurduğumuzda yüklenen dinamik modülleri görmek için /usr/share/nginx/ modules’e bakın (/etc/nginx/ modules dizini de bu yola sembolik bir bağlantıdır). Şimdi oraya bakarsak hiçbir şey görmeyiz:
[root] $ ls -l /etc/nginx/modules/ [root] $
Burada hiçbir şey yok, çünkü kullandığımız resmi önceden derlenmiş yapı, ikilinin kendisinde derlenmiş birinci taraf, isteğe bağlı modüllerin çoğuna sahip. Nginx -V kullanılarak ikilimizin nasıl yapılandırıldığına bakarak kurulan modülleri görebiliriz:
[root] $ nginx -V nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
Son satır (yapılandırma argümanları bir) bize pek çok bilgi sağlar, ancak maalesef okunması zor. Tüm –with – * _ modül satırlarını elde etmek için bazı komutları birbirine zincirleyelim:
[root] $ nginx -V 2>&1 | tr -- - '\n' | grep _module http_addition_module http_auth_request_module http_dav_module http_flv_module http_gunzip_module http_gzip_static_module http_mp4_module http_random_index_module http_realip_module http_secure_link_module http_slice_module http_ssl_module http_stub_status_module http_sub_module http_v2_module mail_ssl_module stream_realip_module stream_ssl_module stream_ssl_preread_module
Bu, ikili olarak derlenen tüm ek modüllerin bir listesidir ve bu modüllerde tanımlanan yönergeler, bunları load_module yönergesi kullanılarak yapılandırmamıza yüklemeye gerek kalmadan bizim için kullanılabilir.
Şu anda mevcut olan modüller hakkında kabaca bir fikrimiz göre göre, dinamik modüller kullanılarak şekerleme eklemeye geçmeye hazırız.