Nginx aslen Rambler isimli yoğun trafiği olan rus sitesinde kullanılmak üzere Rus yazılım mühendisi Igor Sysoev tarafından geliştirilen hafif, stabil, hızlı websunucudur.
Nginx kurulumu ve konfigurasyonunu daha farklı bir yazıda anlatmayı düşünüyorum. Bu yazıdaki amacım Nginx i bir kez olsun kurup + php yi çalıştırıp apache nin .htaccess dosyasını çalıştıramamış kişilere bir örnekle olayı anlatmam.
Apache bildiğiniz üzere dokuman root dizinindeki .htaccess dosyasındaki yönergeleri okuyarak işlem yapabilmektedir. fakat diğer web sunucularda (lighttpd, nginx, zeus vb..) şimdilik böyle bir standart düşünülmemektedir.
dolayısı ile nginx in rewrite modulunu ancak config dosyasının içerisinde tanımlamamız gerekmektedir.
Aşağıda örnek bir Nginx.conf dosyası vardır.
worker_processes 1;
events { worker_connections 1024;}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name domain.com domain.com;
location / {
root html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}}
}burada 2 adet locasyonumuz tanımlıdır. Bunlardan birisi "location ~ \.php$" dir ki bu lokasyon php kurduğumuzda eklemiz geren .php uzantıları çalıştıracak parametrenin bulunduğu kısımdır. diğeri ise "location /" dir yani apachenin "htdocs" u yada "publick_html" sidir..htaccess ayarlarımız işde tam bu "location /" de yapıcaz
örnek .htaccess dosyam :
ReWriteRule ^index.html$ index.php [L,NC] ReWriteRule ^tum-videolar.html$ tumvideolar.php [L,NC] ReWriteRule ^en-cok-izlenen-videolar.html$ encokizlenen.php [L,NC] ReWriteRule ^en-cok-izlenen-videolar-sayfa(.*).html$ encokizlenen.php?sayfa=$1 [L,NC] ReWriteRule ^tum-videolar-sayfa(.*).html$ tumvideolar.php?sayfa=$1 [L,NC] ReWriteRule ^aranilanlar-sayfa(.*).html$ etiketler.php?sayfa=$1 [L,NC] RewriteRule ^(.*)-ara-sayfa(.*).html$ arananlar.php?aranan=$1&sayfa=$2 RewriteRule ^(.*)-Sayfa(.*).html$ kategoriler.php?katseolink=$1&sayfa=$2 [L,NC] ReWriteRule ^iletisim.html$ iletisim.php [L,NC] ReWriteRule ^arama.html$ arananlar.php [L,NC] ReWriteRule ^arananlar.html$ etiketler.php [L,NC] ReWriteRule ^puanver.html$ puanver.php [L,NC] RewriteRule ^(.*)-izle.html$ videoizle.php?basliktr=$1 [L] RewriteRule ^(.*)-ara.html$ arananlar.php?etiketaranan=$1 [L,QSA] RewriteRule ^(.*).html$ kategoriler.php?katseolink=$1 [L]Nginx de rewrite yazmaya başlarken if koşulunu yazmak mecburiyetindeyiz.
yukarıdaki gördüğünüz .htaccess dosyasından çok farklı ruleset iniz yoksa sizinde yazıcağınız ifade if (!-f $request_filename) olucaktır.
Yani istek gönderilen dosya yoksa sizin belirleyeceğinize rewrite yapsın.
yani kısaca yukarıdaki kodum şu şekilde değişecek :
if (!-f $request_filename) {
rewrite /index.html /index.php last;
rewrite /tum-videolar.html /tumvideolar.php last;
rewrite /en-cok-izlenen-videolar.html /encokizlenen.php last;
rewrite /en-cok-izlenen-videolar-sayfa(.*).html /encokizlenen.php?sayfa=$1 last;
rewrite /tum-videolar-sayfa(.*).html /tumvideolar.php?sayfa=$1 last;
rewrite /aranilanlar-sayfa(.*).html /etiketler.php?sayfa=$1 last;
rewrite /(.*)-ara-sayfa(.*).html /arananlar.php?aranan=$1&sayfa=$2 last;
rewrite /(.*)-Sayfa(.*).html /kategoriler.php?katseolink=$1&sayfa=$2 last;
rewrite /iletisim.html /iletisim.php last;
rewrite /arananlar.html /etiketler.php last;
rewrite /puanver.html /puanver.php last;
rewrite /(.*)-izle.html /videoizle.php?basliktr=$1 last;
rewrite /(.*)-ara.html /arananlar.php?etiketaranan=$1 last;
rewrite /(.*).html /kategoriler.php?katseolink=$1 last;
}görüldüğü gibi arasında çokda fark yok.bu oluşturduğunu ruleleri "location /" e ekleyip ngin i restart yaptıkdan sonra artık elveda apache diyebilirsiniz.
worker_processes 1;
events { worker_connections 1024;}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.domain.com domain.com;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm index.php;
if (!-f $request_filename) {
rewrite /index.html /index.php last;
rewrite /tum-videolar.html /tumvideolar.php last;
rewrite /en-cok-izlenen-videolar.html /encokizlenen.php last;
rewrite /en-cok-izlenen-videolar-sayfa(.*).html /encokizlenen.php?sayfa=$1 last;
rewrite /tum-videolar-sayfa(.*).html /tumvideolar.php?sayfa=$1 last;
rewrite /aranilanlar-sayfa(.*).html /etiketler.php?sayfa=$1 last;
rewrite /(.*)-ara-sayfa(.*).html /arananlar.php?aranan=$1&sayfa=$2 last;
rewrite /(.*)-Sayfa(.*).html /kategoriler.php?katseolink=$1&sayfa=$2 last;
rewrite /iletisim.html /iletisim.php last;
rewrite /arananlar.html /etiketler.php last;
rewrite /puanver.html /puanver.php last;
rewrite /(.*)-izle.html /videoizle.php?basliktr=$1 last;
rewrite /(.*)-ara.html /arananlar.php?etiketaranan=$1 last;
rewrite /(.*).html /kategoriler.php?katseolink=$1 last;
}
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}}
}bu konuyla alakalı sorularınızı / sorunlarınızı yazarsanız cevaplamaya çalışırım.