Plesk panel kullananların yıllardan beri aynıdır sorunu, nginx ‘i iyi şekilde kuramamak :) Aşağıdaki anlatacağım yazı ile 5dk gibi bir sürede sitelerinizi nginx yardımı ile göstermeye başlayabilirsiniz. Yaptığım testlerde hit olmamasına rağmen apache üzerindeki wordpress siteler oldukça yavaş durumdaydı. Nginx e geçtikten sonra bu süre gözle görülür derecede düştü ve sitede dolaşma, gezme oranı arttı..

Testler sırasında kullandığım plesk panel son versiyondu sanırım 10.0.1 15 günlük deneme süresi var. ancak aplıkasyon kısmı çok hoşuma gitti, birçok şeyi kolayca ve hızlıca kurabiliyorsunuz, ilerde bu konuda detaylı bir inceleme yapacağım :)

1: ilk adım nginx’i kuralım
Nginx’i yum deposundan kuracağız, büyük ihtimal yum deponuzda nginx uygulaması yoktur, bu yüzden aşağıda işletim sisteminize uygun olan kısmı ssh den çalıştırın:

CentOS 5

CentOS 6

Sonrasında aşağıdaki yum kodu ile nginxi kuralım:

Kurulum sırasında size kurulsunmu diye soru süracak y yaparak enter yapın kurulum tamamlansın. şuanda nginx sisteminize sorunsuz şekilde kurulmuştur.

Sırada nginx conf dosyasını kendi hazırladığımız ile değiştirmek var:

2: Siteleri Nginx’e tanıtma
Sıra hesabımızdaki siteleri nginx’e tanıtmaya geldi. Bunun için bu dosyayı düzenlememiz gerekli:
/etc/nginx/conf.d/default.conf

Ben düzenlemek için cuteftp yada filezilla programını kullanıyorum. ancak sizde bunlardan birisi yoksa ssh ilede düzenleme yapabilirsiniz.
SSH ile dosyayı düzenlemek için bu şekilde açın: nano /etc/nginx/conf.d/default.conf

Dosya içerisindeki herşeyi silin ve aşağıdaki örnek kodu düzenleyerek ekleyin: (Guncellendi: 22/11/2011 19:26)

Bu kalıp’a dikkat edin, hesabınızda kaç tane domain varsa bu kalıbı kullanarak tanımlamanız gerekli, yani her domain için alt alta yeniden eklemeniz gerekli. Yani bir domain için yukarıdaki kalıbı eklediğinizde default.conf dosyasına, yeni bir domain eklemek isterseniz aynı dosyada en altdan bir satır aşağı geçerek aynı kalıbı kullanarak diğer domaini tanımlamalısınız..

Ne kadar site varsa hepsini default.conf dosyasında tanımladıktan sonra dosyayı kaydedin ve kapatın.

3: Apache portunu düzenlemek
Şimdi yapacağımız işlemde apache portunu düzenleyerek nginx’e yönlendireceğiz, böylece gelen her istek nginx’e giderek işleyecek, statik dosyalar haricindekiler ise apachede kalacak. (hesabınızdaki siteler hariç, o düzenleme sonraki adımda yapılacak)

Bu dosyayı düzenlememiz gerekli: /etc/httpd/conf/httpd.conf
ssh ile yapacaklar: nano /etc/httpd/conf/httpd.conf

Bu dosya içinde Listen 80 kısmı bulup bu şekilde değiştireceğiz: Listen 8080
Kaydedip çıkıyoruz.

3:a – Apache icin mod_rpaf kurulumu:
mod proxy and forward denilen bu modul sayesinde biz nginxden gelen istemlerin normal istemciden gelmis gibi gorunmesini saglayacagiz.

Guncel modul versiyonu icin buraya bakabilirsiniz (asagidaki gunceldir mod_rpaf: 0.6): http://stderr.net/apache/rpaf/download/

Bu modulu kurabilmeniz icin sunucunuzda httpd-devel, gcc uygulamalarinin kurulu olmasi gereklidir, eger bunlar yoksa yada hata aliyorsaniz mod_rpaf kurulumunda asagidaki kodu ssh den calistirin ve eklentileri kurun:

Sonrasinda mod_rpaf kurulumu kurulumunu tekrar bastan yapin..

mod_rpaf kurulduktan sonra httpd.conf dosyanizi acin ve musait bir yere ekleyin:

Kod icerisinde de belirtilen ip kisminin devamina sunucuda ekli olan butun ipleri bir bosluk birakarak yazmaniz gerekli, aksi halde istatistik programlari veya scriptleri her ziyaretciyi default sunucu ip sinde gorecektir, yani kod icerisindeki (127.0.0.1) ipsinden.
NOT: 127.0.0.1 ip adresini silmemeniz gerekli, diger ip adreslerini devamina eklemeniz gerekli.. (sunucuda kac ip varsa hepsini bir bosluk birakarak devamina ekleyin.)

4: Hesabımızdaki siteleri nginx’e yönlendirelim
Pleskde sitelerin konfigürasyon dosyaları bu klasör içinde bulunur herzaman: /var/www/vhosts/DOMAİN.COM/conf
Bu klasör içinde domaine ait ip, yönlendirme v.s gibi bilgiler yer alır, burdaki dosyaları düzenleyerek içerisinde 80. portu gelen istekleri nginx portuna yönlendirecek şekilde düzenleyeceğiz. Bu düzenlemeyi her domain için yapmanız gerekli, en azından nginx’in yorumlamasını istediğiniz ve nginx’e tanıttığınız siteleriniz için.

Klasör içindeki bütün dosyaları açın, örnek bu şekilde oluyor isimleri genelde:

ve aşağıdaki gibi bir yer arayın: Genelde 135-140. satırlar arasında yer alır.

Yani kısaca ordaki dosyaların hepsini açın ve bunu aratın :80 bulduklarınızı da bununla değiştirin :8080

Yine bu düzenlemeyi o klasördeki bütün dosyalarda aratıp bulduklarınızda yapın. Ve hesabınızda ekli bütün domainler için ayrı ayrı yapmanız gerekli :)

4:a – Birden fazla IP li domain varsa eger:

birden fazla domain ve bu domainlere ayri ayri ip atanmis ise asagidaki gibi ipleri belirtmeniz gerekli her domain ipsi icin:

yani her ip icin tanimlama girmeniz gerekli. Genelde vps sitelerinde cikabilecek bir sorun, eger her domainize ayri ayri ip atamis iseniz bu ayari yapmaniz gerekmektedir. Aki halde acilmama gibi sorunlarla karsilasabilirsiniz.

Sonrasında önce apache’e restart atıp sonrada nginx’i başlatalım.
Apache restart:

Nginx başlat:

Lazım olabilecekler:
Nginx yeniden başlatma:

Guncellendi: 21/11/2011 19:39
Son bir adim kaldi. Oda kok dizin chmod ayarini duzenlemek. bunu yapmazsaniz nginx’e yonlendirdigimiz statik dosyalar calismayacaktir ve 404 not found hatasi verecektir.
Sitenizin kok dizininin chmod ayarini 0750 den 0755 e cevirin (degistirin): /var/www/vhosts/DOMAIN.com/httpdocs

Ornek resimdeki gibi olacak:

Buraya kadar sorunsuz ve hatasız geldi iseniz hayırlı olsun artık tanımladığını domainler nginx tarafından yorumlanıyor demektir. Bunu test etmek için buraya girip sitenizi sorgulatın ve çıkan sonuçlarda nginx ile versiyon numarasını görün. Görüyorsanız kendinizle gurur duyun :)

5: Nginx’i yeni versiyona guncelleme
Nginx yeni versiyon ciktiginda asagidaki yum kodunu ssh den yazip enter yapin:

Sonrasinda size soru soracak y yazip enter yapin nginx guncellensin otomatik olarak :)

sonrasinda nginx e restart atalim:

Bu dokümanı hazırlarken 3 vds den yararlandım, 3’unde de kurdum sorunsuz çalıştı. Netde ki çoğu anlatımda farklı eklentileride kurduruyorlar size ancak problem çıkmadığı için gerek duymadım onları kurmaya. ancak olaki bir sorun çıkarsa yorum olarak bize bildirin, doküman o yönde güncellenecek, yenilenecek, evrim geçirecektir :)

Su an itibari ile dokuman guncellenmistir: 31/01/2012 19:58 (domainleri nginx’e tanitirken kullandigimiz kalip kodlarinda guncelleme yaptim, nginx in isleyecegi statik dosyalari belirterek nginxden daha fazla yararlanmamizi sagladik.

Yeni guncelleme: mod_rpaf kurulumunu anlattim, bunun eksikliginde ziyaretciler ayni IP den girilmis gibi goruluyor ve ip bazli korumali scriptlerde giris sorunu yasanmaktadir. Ayrica giren herkesi ayni ipden gorundugu icin dogru sonuc alinamamaktadir. bu yuzden boyle eksiklikleri yasamamak icin bu eklentiyi kurmamiz gerekli. Lutfen yukaridaki guncelleme tarihinden once bu dokumani kullananlar mod_rpaf kurulum kismini uygulayarak sunucularini guncellesinler.

Yeni guncelleme: Birden fazla ip li ve degisik ipdeki domainler icin duzenleme. Eger her domaine farkli ip atiyorsaniz, bu ayari yapmaniz yerinde olacaktir. bunun icin 4:a kismini uygulamaniz yeterli olacaktir.

Vatana millete hayirli olsun) :)

75 YORUMLAR

  1. Selçuk kardeşim anlatımın on numara olmuş. Makalenin eski haline göre nginx i kurmuştum.

    Bir şey merak ediyorum. Bu bilgi yarışmaları oluyor bizde sitemize ziyaretçi gelsin diye bilgi yarışmasında sorulan soruların cevaplarını sitemize açıyoruz.

    Ama bi yığılıyorlar millet merak ediyor bi an 3000-5000 kişi geliyor nginx kilitleniyor :)

    Acaba ayar dosyasında hangi değeri artırmamız lazım, RAM konusunda sıkıntı yok. Optimize etmek istiyorum ama default ayarları bozmak istemiyorum bilmediğim için…

    worker_rlimit_nofile 4096;
    worker_connections 1024;

    burdaki ayarı mı artırmak lazım ki?

    • Cunku SSL guvenli baglanti yontemi ile baglanmaya calisiyorsun siteye (https). ve bu baglanti bicimi 8080 inci protu desteklemiyor yada desteklemez diye biliyorum. genelde 443 yada kendine has bir portu oluyor, hic calismadigim icin net bir bilgim yok malesef.

  2. ssl sorununu hallettim. Şimdi benim vpsdeki siteler şu sekilde:

    a sitesi: m ipsinde,
    diğer bütün siteler n ipsinde.

    Ben /var/www/vhosts/DOMAİN.COM/conf dosyalarını bütün domainlerde değiştirdim. Fakat bütün siteler a sitesine yonleniyor. Sadece a sitesi açılıyor. bu sorunu cozemedim.

    • Nginx tarafli sitelerinizi tanittinizmi peki ? plesk panellerde otomatik bu olusturulamiyor malesef, siz el ile her site icin tek tek tanimlama girmeniz gerek, yukarda bu konudan bahsettim. Her site icin yukaridaki: /etc/nginx/conf.d/default.conf anlatim kismindaki gibi kalip ayar kodlarini alt alta girmeniz gerek. Yani her sitenizi burdaki tanimlamalara uygun sekilde duzenleyip eklemeniz ve sonrasinda nginx’e restart atmaniz gerek..

      • Evet her site için o dediğinizi yaptım. default.conf içerisine her site için verdiğiniz o kodu alt alta yapıştırdım ve domainleri girdim. iplerine de dikkat ettim. Yarın daha detaylı olarak bakacağım. Yardımlarınız için çok teşekkür ederim. Yaklaşık 5-6 aydır nginx kurmaya çalışan biriydim fakat bir türlü becerememiştim. sizin bu makaleniz sayesinde kurdum ve çalıştırabildim küçük bir sorun da olsa… Bu sorunu da yarın inşallah çözeriz. Tekrar tekrar çok teşekkür ederim yardımlarınız için.

  3. Hocam bütün dediklerinizi aynen yaptım. hata mı yaptım diye tekrar bastan yaptım ama 2 site hariç diğerleri açılmıyor.

    Yani;
    a sitesi m ipsinde
    diger sitelerin hepsi n ipsinde.

    Diğer sitelerin biri hariç hepsi a sitesine yönleniyor. Sabahtan beri bu işle meşgulüm ama bir türlü çözemedim.

  4. Hocam bir türlü çalıştıramadım bütün siteleri. aynen dedigini gibi yaptım. ilk 2 sitenin conf dosyasını değiştiriyorum üçüncü sitenin conf dosyasını değiştirince httpd sercice restart komutunda şu şekilde bir uyarı veriyor.

    Starting httpd: [Tue Jan 31 01:21:24 2012] [warn] VirtualHost 31.169.84.17:8080 overlaps with VirtualHost 31.169.84.17:8080, the first has precedence, perhaps you need a NameVirtualHost directive

    1’den fazla site çalıştırabilen varmı ?

      • hocam ustdeki sorunu tekrar yazdiginizda anlamistim boyle bir seyi unuttugunuzu. Ancak konuya eklemedim fazla onemli degil diye, eklememde fayda olacak, sizin gibi ugrasanlar icin yardimci olacaktir. Sorunu cozup paylastigin icinde tesekkurler, cogu kisi birakip gider :)

  5. Sizi burda gordüğüme sevindim.
    nginx ile vbulletin 4 forum kullanıyorum

    fakat yolunda gitmeyen birşeyler var. online sayısı onceden forumda 600lerde gosterirdi şimdi 200 civarında gosteriyor. (yanlış anlaışması siteye girilmiyor demiyorum hit her zamanki gibi geliyor fakat online sayısı farklı gosteriyor)

    mesaj yazma editoründe hiçbir buton gorünmüyor. orası bomboş. (vbulletin 4)

    Kullanıcılar sürekli 5 hatalı giriş yaptınız 15 dk bekleyiniz hatası alıyor (ben dahil)
    online listesinde bütün kişilerin ipsi aynı gorünüyor. (5 hatalı giriş yapma meselesi bundan kaynaklı herkesin ipsi aynı gorünüyor.)
    Sizce bunlar neden?

    • Sunu uygulayip nginx ve apache ye restart atin:

      cd /usr/local/src
      wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
      tar xvfz mod_rpaf-0.6.tar.gz
      cd mod_rpaf-0.6
      /usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

      kurulmaz ise once bunu yapin, sonra tekrar yukardakileri yapin:

      yum install httpd-devel gcc

      Ardindan httpd.conf dosyasina asagidakileri ekleyin:


      LoadModule rpaf_module modules/mod_rpaf-2.0.so
      RPAFenable On
      RPAFproxy_ips 127.0.0.1 10.0.0.1 (ornek: 127.0.0.1 IP1 IP2 IP3 v.s)
      RPAFsethostname On
      RPAFheader X-Forwarded-For

      Kod icerisinde de belirtilen ip kisminin devamina sunucuda ekli olan butun ipleri bir bosluk birakarak yazmaniz gerekli, aksi halde istatistik programlari veya scriptleri her ziyaretciyi default sunucu ip sinde gorecektir, yani kod icerisindeki (127.0.0.1) ipsinden.
      NOT: 127.0.0.1 ip adresini silmemeniz gerekli, diger ip adreslerini devamina eklemeniz gerekli.. (sunucuda kac ip varsa hepsini bir bosluk birakarak devamina ekleyin.)

      apache plesk de denemedim ama sorununa cozum olabilir, olmazsa tekrar yaz bana.

      bu arada resmlerin gorunmemesi sorununun sebebi yukaridaki dokumandaki en son chmo islemi olabilir. Genelde bu yuzden resimlerde sorun cikabiliyor.

  6. /usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

    bunu sshden yazınca şu hatayı veriyor: (bundan onceki adımları yaptım)

    -bash: /usr/local/apache/bin/apxs: No such file or directory

  7. LoadModule rpaf_module modules/mod_rpaf-2.0.so
    RPAFenable On
    RPAFproxy_ips 127.0.0.1 ip ip2
    RPAFsethostname On
    RPAFheader X-Forwarded-For

    bunu da httpd.conf ‘a ekleyince service httpd restart edince şu hatayı veriyor:
    Stopping httpd: [FAILED]
    Starting httpd: httpd: Syntax error on line 988 of /etc/httpd/conf/httpd.coannot load /etc/httpd/modules/mod_rpaf-2.0.so into server: /etc/httpd/moduld_rpaf-2.0.so: cannot open shared object file: No such file or directory

  8. Dediğiniz gibi kurdum ve online listesinde ip’ler artık farklı gorünüyor. sorun çozüldü. Allah razı olsun.

    Şimdi tek bir sorun kaldı. Ona da çozüm bulursam nginx kullananlar klübüne girmiş olacağım.

    Vbulletin 4 mesaj editoru normalde şu şekilde gorünmesi lazım:
    http://kuaza.com/b/out.php/i5476355_2-png

    Fakat nginx ile şu şekilde görünüyor:
    http://kuaza.com/b/out.php/i5476354_1-png

    vbulletin 4 editor olarak tiny editor kullanıyor.
    Bu sorun neden kaynaklanabilir ve nasıl çozebilirim :)
    Yardımlarınız için teşekkürler.

  9. 8080 yazınca çalışıyorsa bu ajax çalışıyor!!!. diye düşündüm. Bir den aklıma esti sayfanın kaynak kodlarına bir bakayım diye. kaynak kodlarında 8080 sayısını aradım 1 tane çıktı:

    var AJAXBASEURL = “http://www.site.com:8080/forum/”; :)

    vbulletin 4 editor sorunu yaşayanlar için çozüm:

    headinclude templatesinde şu kodu ara:

    var AJAXBASEURL = "{vb:raw ajaxbaseurl}";

    şununla değiştir.

    var AJAXBASEURL = "http://www.domainadresi.com/forum/";

    forum klasoründe değilse forum yazısını silin. yani şu şekilde:

    var AJAXBASEURL = "http://www.domainadresi.com/";

    apache ile sürekli kasılan ve kitlenen site şuan gayet stabil çalışıyor. Oncelikle bu anlatımı yapan selçuk abiye çok Teşekkür ederim. Şimdi artık sıra nginx konfigirasyonunu geliştirmeye geldi. Bu konuda selçuk abiden makalelerini ve desteklerini bekleriz. Nginx geliştirilmeye çok açık. Belki şuan kullandığımız konfigirasyonları zamanla geliştirirsek siteleri 2 kat daha stabil çalıştırabiliriz. Tekrar teşekkürler kolay gelsin.

    • Bu kismi uygulamadin sanirim:

      Son bir adim kaldi. Oda kok dizin chmod ayarini duzenlemek. bunu yapmazsaniz nginx’e yonlendirdigimiz statik dosyalar calismayacaktir ve 404 not found hatasi verecektir.
      Sitenizin kok dizininin chmod ayarini 0750 den 0755 e cevirin (degistirin): /var/www/vhosts/DOMAIN.com/httpdocs

      Sonrasinda resimler gorunmeye baslayacaktir..

  10. Ustam yukarida yazdiklarini uygulayarak nginx denen seyi serverime sorunsuz kurdum. Bu makale icin tesekkür ediyorum.
    Fakat bir kac sorun ortaya cikti. Kurduktan sonra ilk sorun su oldu;
    Serverde iki tane domain vardi. Ikisi de ayni IP’yi kullaniyor. Fakat ben ikisini de ayri klasörlere kurdum ve pleskten yönlendirme yapmis, sitelere böylelikle sorunsuz erisiyordum. Ngingx kurunca önce siteler gitti. Resimler falan cikmadi, templateler cikmadi vs. Sonra baska bir forumda bir cözüm buldum. Buraya da ekleyeyim;

    sh nginx.sh
    service nginx stop
    service nginx start

    bu komutlari uyguladim. Site yerine geldi. Fakat her iki domain de ayni yeri görüyor. Yani A sitesini. Halbuki yukarida da anlattigin gibi alt alta yapmistim. Sonra birini sildim, conf klasörünü de eskisi gibi yükledim. Yine ayni. Sonra ayri bir klasör acarak siteyi yeniden kurmayi denemeye kalktim. Bu defa filezilla calismadi. Dosyalari göremedi ve yükleyemedi. Tüm fonksiyonlari kayboldu. Sonra ssh ile winscp programini calistirdim ve onunla yükledim. Install etmeye kalktim önce Bad gateway dedi, sonra kalsörlere falan izinleri actim, bu defa da bulunamadi hatalari verdi.
    Tekrar plesk panele döndüm ve yaptigim yönlendirmeyi kaldirdim, siteyi yine eski klasörüne yönlendirdim. Fakat sitenin yerinde su an yeller esiyor. Bana apachenin sayfasini gösteriyor.
    Bir türlü siteyi geri getiremedim.
    Silmeye kalsam bunu nasil silebilirim veya bunun bir cözümü var mi?

  11. Bütün dediklerini yaptım. bütün sitelerim 2kr2.com a yönleniyor lütfen yardım et msndeyim [email protected]
    apache başlatırken şu hatayı alıyorum

    Starting httpd: [Wed Apr 18 20:30:40 2012] [warn] VirtualHost 176.53.34.51:8080 overlaps with VirtualHost 176.53.34.51:8080, the first has precedence, perhaps y ou need a NameVirtualHost directive
    [Wed Apr 18 20:30:40 2012] [warn] VirtualHost 176.53.34.51:8080 overlaps with Vi rtualHost 176.53.34.51:8080, the first has precedence, perhaps you need a NameVi rtualHost directive

    • Dokumandaki bu kismi yapin: 4:a – Birden fazla IP li domain varsa eger:

      ve butun domainlerinize ait vhost dosyalsini acip portlari dokumanda soyledigim sekilde degistirip apacheye restart atin.

      nginx kod kaliplarinizin dogrulugundan emin olup nginx e restart atin.

      sonrasinda duzelmesi gerek, duzelmezse problemi tekrar yazin.

  12. merhaba selçuk bey,
    makaleniz için teşekkürler,
    sunucumuzu nginx e geçirdik, fakat sitemizde uzun süren sql sorguları var, bu yüzden de “504 & Gateway Time-out” a düşüyor,
    proxy_send_timeout 120;
    proxy_read_timeout 120;

    ayarlarını artırdığım halde yeterli olmuyor, hangi süreyi artırmamızı tavsiye edersiniz.

    iyi çalışmalar

    • Öncelikle uzun süren sql sorgularınız varsa her halükarda yük yine apache ve php üzerinde olacaktır. Nginxin burda bir faydasını göremezsiniz. bunun için cache yapmanızı yada sunucu bazlı bir cache programı kullanmanızı tavsiye ediyorum.

      Nginx için ise Şunları bir denermisin:


      client_max_body_size 5m;
      client_header_timeout 3m;
      client_body_timeout 3m;
      send_timeout 3m;
      connection_pool_size 256;
      client_header_buffer_size 4k;
      large_client_header_buffers 8 32k;
      request_pool_size 4k;
      output_buffers 4 32k;
      postpone_output 1460;

      • merhaba selçuk bey,
        proxy_read_timeout 120; yi 1600 e çıkartığımda uzun süren sql beklemelerindeki, süreyi çözdü ve time out problemini çözdü, fakat yine post işlemlerinde 100 ü geçtiğinde sonrakileri kesiyor, post limitini belirleyen bir ayar varmı?

        teşekkürler,

          • merhaba selçuk kusura bakma sana çok soru soruyoruz, ilginize çok tşk. ler,
            sunucumda tek ip üzerinde 3 ayrı domain var, 3 ünüde conf yapılanmasına şablondaki gibi ekledim, fakat “NameVirtualHost ip1:8080 “satırını sona eklemeden 2. ve 3. domainde yönlendirme çalışmadı, sonra
            NameVirtualHost ip1:8080 eklediğimde, aşağıdaki hatayı alıyorum,

            [Tue Nov 13 21:38:09 2012] [warn] NameVirtualHost ip1:8080 has no VirtualHosts

            ve belirli bir süre sonra web siteleri çok yavaşlıyor,

            ne tavsiye edersiniz.

            şimdiden teşekkürler,

          • Tek ip varsa sadece bir kere eklemen gerek namevirtualhost komutunu. alt taraftada siteleri tanıtırken hepsine aynı ipyi gireceksin. nginx yapılanmasında da ipleri girdiğinde sorunsuz şekilde yönlendirme sağlanmış olur..

  13. Merhaba,
    Anlatım için teşekkürler. Kurulumu sorunsuz bir şekilde yapıp siteyi nginx ile çalıştırdım fakat load sürekli yükselmeye başladı. Hiç bir şey eksik değil, kontrol ettim hepsi anlattığınız gibi. Site bir download sitesi ve yüksek hiti var. load büyük ihtimal bu yüzden yükseliyor ama neyden yükseliyor bulamadım. Bu arada paylaşım yapılan dosyalar rar şeklinde sunucudan paylaşılıyor.

    • rar uzantısı statik dosya olarak sunuluyorsa bunu nginx kolaylıkla işler ve apacheye yük bindirmez. Ancak upload/download’ a izin verdiğiniz dosya türlerini nginx ksite konfigürasyon ayarları kısmında da belirtmeniz gerekli. Aksi taktirde nginx bu dosyalara dokunmaz ve apache tarafından işlenir ki buda loadlarınızın yükselmesinin ana sebeplerinden birisi olabilir..

      Ayar dosyasında aşağıdaki gibi bir yer var (nginx):
      location ~* .(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|js|css)$ {

      Burda az öncede yazdığım gibi dosya türlerini belirtmelisiniz. Örneğin ben bir kaç tane ekleyeyim:
      location ~* .(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|js|css|rar|exe|zip)$ {

      Kolay gelsin…

      • iso ve msi uzantısını unutmuşum, o yüzden load yükseliyormuş. Yine de ftpye bakıyorum eksik bir uzantı olmasın diye. Allah senden razı olsun, bugüne kadar hiç bir anlatımda başarılı olamamıştım. Sayende nginx kurdum ve çalıştırdım (plesk sunucu). Merak ettiğim bir olay da worker_processes olayı. Bu worker_processes ayarını neye göre ayarlıyoruz. İşlemci sayısına göre mi yoksa işlemci çekirdek sayısına göre mi? Benim sunucu özellikleri : İşlemci AMD Athlon™ II X4 (4 Çekirdek) İşlemci sayısı 4x 2.3 GHz Ram 16 Gb (sunucuda tek site)

        Son olarak da, sitem anlık 100 ile 250 kişi arası hit alıyor. Nginx konfigirasyon dosyasında ekstra bir ayar yapmak gerekiyor mu, ya da yükseltilmesi gereken bir ayar var mı?

        • Sorunun düzeldiğine sevindim.

          worker_processes: CPU işlemci çekirdek sayısına göre yapılır ve eğer çekirdek sayınız varsa artırmanızı öneririm çünkü nginx kullanılabilir alanları bu şekilde kullanarak ramden ve cpudan daha fazla yardım alır. Örnek kullanım için aşağıdaki ayarı kullanabilirsiniz: (Bu ayarlar performansinizi artıracaktır. eğer kaydetip nginx restart attığınızda hata alırsanız buraya yazın. Bu ayarlar belli bir alan için yüksek olabilir, o alanında yükseltilmesi gerekebilir)

          worker_processes 4;
          worker_rlimit_nofile 5000;

          events {
          worker_connections 1000;
          }

          • worker_processes 4; (1 idi 4 yaptım )
            worker_rlimit_nofile 5000; (yoktu ekledim)

            events {
            worker_connections 1000; (1024 idi değiştirmedim)
            }

            Herhangi bir hata veya olumsuz bir durum ile karşılaşmadım. Performansda gözle görülür bir artış oldu. CPU Load 2.0 ile 10.0 arası gidip geliyordu. Nginx kurduktan sonra 0.40 ile 1.20 arasında gidip geliyor :) Ram 12 Gb’a kadar çıktığını gördüm lakin nginx kurduktan sonra 1Gb’ı geçmiyor :) bu süper :)

            Size ne kadar teşekkür etsem azdır. Çok sağolun.

            Nginx’i kurunca htaccess’deki hotlink koruması pasif oldu. Daha önceleri de nginx kullandığımda (danginx) hotlink olayına bir çözüm bulamamıştım. Dosyalar sunucuda olduğu için başkaları tarafından da link verilip paylaşılsın istemiyorum. htaccess’de bu olayı çok iyi yapıyordum lakin şimdi bu geçersiz oluyor. Özellikle rar doyalarında hotlink korumasını sağlamam gerekli. Bu konuda da bilginiz var ise yardımcı olursanız çok sevinirim.

            Ayrıca nginx ile ilgili hem Türkçe makale hem de nginx hakkında bilgili olan bir Türk bulup cevap almak inanın çok zor :)

            Ben her takıldığım yerde sizden yardım almak için yazacağım. Çok teşekkür ederim.

    • Geri dönüş için teşekkürler. Hotlink koruması için eski tarzın işe yaraması gerekliydi. Çünkü burda anlatılan anlatımla apache nin .hteccess dosyaları ve içindeki kuralları nginx içinde geçerli oluyordu. Problemi tam olarak anlarsa çözümüde illaki bulunacaktır diye düşünüyorum.

      • Rica ederim, ilginiz için ben teşekkür ederim. Hotlink olayına çözüm bulursam sizinle paylaşacağım.

        Bir de RPAFproxy_ips 127.0.0.1 10.0.0.1 (ornek: 127.0.0.1 IP1 IP2 IP3 v.s) sunucuda ekli olan tüm ip adreslerini aralarında boşluk bırakarak yazmanız gerekli demişsiniz. Ben 127.0.0.1 adresini ekledim lakin bu kısma sunucunun dış ip adresini de ekleyecek miyim bilemedim.

        • Sunucuda ekli olan dış ip dahil sornadan eklediğini iplerin hepsini aralarında boşluk bırakarak ekleyin ve apache ye restart atın. Sonrasında sitenizin ziyaret edenlerin iplerinin kendi ipleri olduklarını göreceksiniz :) belki hotlink olayıda çözülür. Çünkü bunu yapmadığınızda sitenize girenlerin hepsinin ipsi local ip olarak görünüyor.

  14. Merhabalar,
    Anlaşılır ve Türkçe kaynak için teşekkürler! Bu arada default.conf dosyasında izin verilen uzantılardan dolayı sitenizde bir takım bozulmalar yaşanabilir Selçuk Bey de bahsetmiş zaten ama vurgulamak istedim:
    İlgili uzantıyı location kısmına ekleyiniz veyahut aşağıdaki ile değiştirip kontrol ediniz:

    location ~* .(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|js|css)$ {

    yerine:

    location ~ \.php$
    {

    Başarılar..

Bir Cevap Yazın