Nginx Nedir?
Nginx, yüksek performanslı bir web sunucusu ve ters proxy sunucusudur. Açık kaynaklı olarak geliştirilen Nginx, statik içerik sunma yeteneği ve asenkron olay tabanlı mimarisi sayesinde yüksek trafik yüklerindeki etkili performansı ile bilinir. Nginx, birçok kullanıcı tarafından yük dengeleme, HTTP önbellekleme ve ters proxy işlevleri için tercih edilmektedir. Nginx’in işlevselliği, çeşitli modüllerle artırılabilir. Modüller, sunucunun yeteneklerini genişletmek için kullanılır ve iki ana türde bulunur: dinamik ve statik modüller.
Nginx Modül Türleri
Dinamik Modüller
Dinamik modüller, Nginx’in çalışma zamanında yüklenebilen modüllerdir. Bu modüller, Nginx’in ana uygulamasıyla bütünleşmeden ayrı olarak derlenir ve sunucu çalışırken gerektiğinde yüklenir. Kullanıcı, gereksinimlerine göre bu tür modülleri ekleyip çıkarabilir.
Statik Modüller
Statik modüller, Nginx’in derleme sırasında doğrudan ana uygulamanın içine entegre edilen modüllerdir. Bu tür modüller, derleme sürecinde Nginx kütüphanelerine dahil edilir. Sunucu çalıştıktan sonra bu modüller çıkarılamaz ya da yüklenemez; dolayısıyla sunucunun yeniden derlenmesi gerekir.
Modül Geliştirme Ortamının Hazırlanması
Nginx modülü geliştirmek için öncelikle gerekli araçlar ve kaynaklar hazırlanmalıdır. Geliştirme ortamı aşağıdaki adımlarla kurulabilir:
1. Gerekli Araçların Kurulumu: GCC (GNU Compiler Collection), make, git gibi derleme araçlarının kurulu olduğundan emin olunmalıdır. Bu araçlar, C dilinde yazılmış Nginx modüllerini derlemek için gereklidir.
2. Nginx Kaynak Kodunun İndirilmesi: Nginx’in en son sürümü, resmi web sitesinden veya bir git deposundan indirilebilir. İndirme işlemi tamamlandıktan sonra, kaynak kodun bulunduğu dizine gidilir.
“`bash
wget http://nginx.org/download/nginx-
tar -xzf nginx-
cd nginx-
“`
3. Modül Geliştirme Klasörünün Oluşturulması: Nginx kaynak kodunun bulunduğu dizinde, kendi modül geliştirme klasörünüzü oluşturmak gereklidir. Bu klasörde modül ile ilgili tüm dosyalar yer alacaktır.
Modül Geliştirme
Modül Yapısı
Nginx modül yapısı genellikle iki ana bileşenden oluşur: modülün tanıtıldığı header dosyaları ve işlevselliği sağlayan C kaynak dosyaları. Modül dosyalarının genel yapısı şu şekildedir:
– modul_adı.c: Bu dosya, modülün işlevini tanımlar.
– modul_adı.h: Bu dosya, modülün gerekli başlık dosyalarını ve yapı tanımlarını içerir.
Temel Modül Kod Yapısı
Bir Nginx modülünde genellikle aşağıdaki yapılar kullanılır:
“`c
include
include
include
static ngx_int_t my_module_handler(ngx_http_request_t r) {
// İşlevin gerçekleştireceği eylemler burada tanımlanır.
return NGX_OK;
}
static ngx_http_module_t my_module_ctx = {
NULL, // preconfiguration
NULL, // postconfiguration
NULL, // create main configuration
NULL, // init main configuration
NULL, // create server configuration
NULL, // merge server configuration
NULL, // create location configuration
NULL // merge location configuration
};
static ngx_command_t my_module_commands[] = {
{ ngx_string(“my_directive”),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
my_module_handler,
0,
0,
NULL },
ngx_null_command
};
static ngx_module_t my_module = {
NGX_MODULE_V1,
&my_module_ctx,
my_module_commands,
NGX_HTTP_MODULE,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NGX_MODULE_V1_PADDING
};
“`
Nginx Modülünün Derlenmesi
Modül kodu geliştirildikten sonra, Nginx’in derlenmesi için gereken adımlar şu şekildedir:
1. Konfigürasyon Ayarları: Nginx’i derlerken modülü dahil etmek için `./configure` komutuna modül yolu eklenmelidir. Örneğin:
“`bash
./configure –add-module=/path/to/my_module
“`
2. Derleme İşlemi: Konfigürasyon ayarları tamamlandıktan sonra aşağıdaki komutla Nginx derlenir:
“`bash
make
sudo make install
“`
3. Nginx’in Başlatılması: Nginx’i başlatmak için aşağıdaki komut kullanılabilir:
“`bash
sudo /usr/local/nginx/sbin/nginx
“`
Modülün Test Edilmesi
Modül başarıyla derlendikten sonra, Nginx’in web sunucusu üzerinde belirtilen direktiflerin düzgün çalıştığı kontrol edilmelidir. Bu test, belirli URL’lere erişerek veya Nginx’in log dosyalarını inceleyerek yapılabilir.
Sonuç
Nginx modül geliştirme süreci, özel ihtiyaçlara yönelik yetenekleri eklemek için önemlidir. Modüllerin doğru bir şekilde derlenmesi ve gizli kalmış işlevlerin ortaya çıkarılması, sunucunun genel performansını artırabilir. Kullanıcılar, Nginx’in modüler yapısını kullanarak özelleştirilmiş çözümler geliştirebilir ve kendi sunucu ihtiyaçlarına uygun hale getirebilir.