Dinamik içerik Apache yardım için ters proxy olarak Nginx sadece olacak

5 Cevap php

Ben sadece dinamik içerik sol var benim sunucu üzerinde yani bir CDN tüm statik içerik taşımak planlıyorum. Ben şimdi Nginx Apache olarak ters proxy kurdunuz. Doğrudan Apache gitmek zorunda kalmadan Nginx tarafından teslim nereye geldi statik isteği.

Bu durumda Nginx talebi büyük bir kısmını ele ve açıkça Nginx gerekliliğini görebilirsiniz.

Şimdi başka bir etki için tüm statik içerik taşındı, Apache önünde nginx için bir ihtiyaç hala var. Şimdi tüm istek, varsayılan dinamik istekleri ve tüm Apache gidin çünkü.

Sadece dinamik içerik için çalışan Nginx ve Apache olan başka faydaları vardır.

Benim dinamik içerik PHP / MySQL

Edit:

I now have Nginx as a reverse proxy. It delivers static and dynamic content. Ama bir CDN benim statik dosyaları hareket ediyorum: açık olmak. Ben o hala benim etki Nginx gerekiyor.

5 Cevap

Hayır, artık nginx gerekmez.

Evet kesinlikle Apache önünde nginx gerekiyor. Apache bağlantı başına 1 iplik veya işlemi kullanır. Bu ipliklerden her bellek işgal. Sizin sitenizi ziyaret birkaç yüz kişi var ve keepalive'ı etkin varsa, bu tarayıcıların her bir Apache sürecini tutmak ya da sunucu üzerinde yoğun işgalci bellek takılacaktır.

Eğer apache sunucu üzerinde keepalive'ı devre dışı bırakarak bu sorunu yaratabilir ama tarayıcılar bağlantılarını yeniden çünkü bu web sitenizin performansını yavaşlatır.

Peki yerine etkinleştirilmiş canlı tutma ile bir ters proxy olarak nginx kullanın. Küçücük bir bellek ayak izi (yaklaşık 8 megabite) ile bağlantıları binlerce koruyabilirsiniz. Nginx her isteği sadece birkaç mikrosaniye boyunca bir apache çocuk veya iplik kaplar sizin apache sunucusuna yerel olduğu için. Yani apache süreçlerin sadece bir avuç ile binlerce kişiye hizmet anlamına gelir.

Ayrıca nginx yapılandırma çok daha esnek apache den ve size bir esneklik verir ön ucunda o sahip gereğidir.

Ne ben bir web sitesi için yaptık olduğunu:

  • Apache önünde bir ters proxy olarak nginx kurmak
  • configure it so :
    • PHP sayfaları için istekleri (i.e. dynamic content) Apache gönderilir
    • Statik dosyalara İstekler (CSS, JS, ...) doğrudan nginx tarafından sunulmaktadır.

Bu iki etki kurmak zorunda kalmadan: hepsi aynı etki alanında.


Basically, what I've done is :

  • önbelleğe alma ile, gzip sıkıştırma olmadan, nginx görüntüleri hizmet
  • önbelleğe alma ile, gzip sıkıştırma ile nginx gelen js / css (yani metin dosyaları) hizmet
  • bazı diğer uzantıları önbelleğe alma olmadan (pdf, exeutables, ...) form nginx, sıkıştırma olmadan, hizmet
  • Apache diğer istekleri geçmek


Here's how my nginx's configuration file looks like :

server {
    listen   80;
    server_name  MY_DOMAIN_NAME;

    access_log  /var/log/nginx/MY_DOMAIN_NAME.access.log;

    gzip on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types text/plain text/html text/css text/xml application/xml application/xml+rss application/xml+atom text/javascript application/x-javascript application/javascript;

    location ~* ^.+\.(jpg|jpeg|gif|png|ico)$  {
        root    /home/www/MY_DOMAIN_NAME;
        #access_log off;
        gzip off;
        expires 1d;
    }
    location ~* ^.+\.(css|js)$ {
        root    /home/www/MY_DOMAIN_NAME;
        #access_log off;
        expires 1d;
    }
    location ~* ^.+\.(pdf|gz|bz2|exe|rar|zip|7z)$ {
        root    /home/www/MY_DOMAIN_NAME;
        gzip off;
    }


    location / {
        proxy_pass   http://MY_DOMAIN_NAME:8080;
        proxy_redirect     off;

        proxy_set_header   Host             \$host;
        proxy_set_header   X-Real-IP        \$remote_addr;
        proxy_set_header   X-Forwarded-For  \$proxy_add_x_forwarded_for;
        proxy_max_temp_file_size 0;

        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;

        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
}


Now, why do such a thing ?

Peki, nginx gerekiyordu:

  • Daha az bellek gerekir
  • Daha hızlı olun
  • Daha fazla bağlantı işlemek mümkün

Yani, ben Apache koymak oluyor yükünü azaltmak, trafik biraz bir web sitesinde yardımcı olabilir varsayalım.

Ayrıca apache durumlarda SSL işleme boşaltması için nginx kullanabilirsiniz.

Örneğin, apache sunucu nginx-> HAProxy-> havuzu ile yapılandırılmış bir yığını var. nginx ve arka uç apache kutuları bir havuza bir kalp atışı küme ve yem istekleri birlikte yaşamak HAProxy. Biz nginx önyüz tüm SSL certs yükleyin.

önünde nginx Apache 1.3 kullanmak durumunda en iyi çözümdür:

nginx kolayca conections binlerce hizmet edebilir, ancak Apache yapamam