• 18-02-2009, 03:13:21
    #1
    Nginx Nedir?

    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.
  • 26-04-2010, 00:03:22
    #2
    Üyeliği durduruldu
    php'yi nginx server nasil tanitacagiz acaba? php.ini dosyasinda bir ayar gerektiriyormu? Adim adim anlatabilirmisiniz?
  • 28-04-2010, 10:49:16
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    phpfastcgi kurman gerekiyor sonrasında aşağıdaki ayarları yapmalısın conf dosyasına

    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;
  • 28-04-2010, 21:20:28
    #4
    mow
    Üyeliği durduruldu
    Bu günlerde baya bir hortlamış nginx konusu. Otomatik çevrim için http://www.anilcetin.com/convert-apa...cess-to-nginx/
  • 15-09-2017, 17:31:02
    #5
    Meksikalı adlı üyeden alıntı: mesajı görüntüle

    bu konuyla alakalı sorularınızı / sorunlarınızı yazarsanız cevaplamaya çalışırım.
    littlewizard adlı üyeden alıntı: mesajı görüntüle
    phpfastcgi kurman gerekiyor sonrasında aşağıdaki ayarları yapmalısın conf dosyasına
    Merhbalar,

    Kullanmış oldugum bir video player var. Aşağıdaki kodları playerın kurulu oldugu klasorde htaccess'e eklemem gerektiği söyleniyor. Ama olmuyor. Nginx'e göre nasıl yaparım bunu?

    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^giris$ giris.php
    RewriteRule ^ayarlar$ index.php?islem=ayarlar
    RewriteRule ^reklam-ayarlari$ index.php?islem=reklamayarlari
    RewriteRule ^player-ayarlari$ index.php?islem=playerayarlari
    RewriteRule ^video-olustur$ index.php?islem=videoolustur
    RewriteRule ^video-duzenle/(.)$ index.php?islem=videoduzenle&id=$1
    RewriteRule ^video-sil/(. )$ index.php?islem=videosil&id=$1
    RewriteRule ^videolar/sayfa/(.)$ index.php?islem=videolar&sayfa=$1
    RewriteRule ^videolar$ index.php?islem=videolar
    RewriteRule ^raporlar/sayfa/(. )$ index.php?islem=raporlar&sayfa=$1
    RewriteRule ^raporlar$ index.php?islem=raporlar
    RewriteRule ^cikis$ index.php?islem=cikis

    RewriteRule ^oynat/(.)$ oynat.php?hash=$1
    RewriteRule ^mp4/(. ).mp4$ mp4.php?hash=$1
    RewriteRule ^subtitle/(.*).srt$ altyazi.php?hash=$1
    ______________________________________________
  • 16-09-2017, 18:27:22
    #6
    Bilgisi olan var mı arkadaşlar?
  • 16-09-2017, 20:26:04
    #7
    humpyers adlı üyeden alıntı: mesajı görüntüle
    Bilgisi olan var mı arkadaşlar?
    arkadaşın dediği şekilde yapabilirsiniz, veya ftp'de video klasörü var ise,

    location /video/{

    nginx htaccess kodları
    }

    şeklinde ayarlayabilirsiniz.
  • 18-09-2017, 10:25:34
    #8
    PiEycPi adlı üyeden alıntı: mesajı görüntüle
    arkadaşın dediği şekilde yapabilirsiniz, veya ftp'de video klasörü var ise,

    location /video/{

    nginx htaccess kodları
    }

    şeklinde ayarlayabilirsiniz.
    Reseller kullanıyorum ve hala yapamadım hocam