Ayrıntılı Nginx yapılandırması

nginx'e genel bakış

nginx ücretsiz, açık kaynaklı, yüksek performanslı bir HTTP sunucusu ve ters proxy sunucusudur; aynı zamanda bir IMAP, POP3, SMTP proxy sunucusudur; nginx web sitesi yayınlama işlemi için bir HTTP sunucusu olarak kullanılabilir ve nginx bunun tersi olarak kullanılabilir Proxy, yük dengeleme uygular.

İşte kısaca nginx'i tanıtmak için başlıca üç husus

  • Ters vekil
  • Yük dengeleme
  • Nginx özellikleri

1. Ters proxy

Temsilci hakkında

Ajans söz konusu olduğunda, önce bir kavramı açıklığa kavuşturmalıyız, sözde ajans bir temsilci ve bir kanaldır;

Şu anda, iki rol tasarlanmıştır, biri delege edilmiş rol ve diğeri hedef roldür. Temsil edilen rolün, bu aracı aracılığıyla bazı görevleri tamamlamak için hedef role erişme sürecine aracı işlem süreci denir; yaşamdaki özel bir mağaza gibi ~ adidas'a misafir Özel mağazadan bir çift ayakkabı satın aldım. Bu özel mağaza temsilcidir. Temsilci rolü adidas üreticisidir ve hedef rol kullanıcıdır.

görüntü

Yönlendirme vekili

Ters proxy'den bahsetmeden önce, ileri proxy'ye bir göz atalım. İleri proxy aynı zamanda herkesin en sık temas kurduğu proxy modudur. İleri proxy'nin işleme modundan, yazılım tarafından hayata iki açıdan bahsedeceğiz. İleri vekilin ne olduğunu açıklayayım

Günümüz ağ ortamında, teknik ihtiyaçlar nedeniyle bazı yabancı web sitelerini ziyaret etmemiz gerekirse, yabancı bir web sitesine bir tarayıcı aracılığıyla erişilemediğini göreceksiniz.Bu zamanda herkes bir FQ operasyonu kullanabilir. Erişim için, FQ'nun ana yöntemi yabancı web sitelerine erişebilen bir proxy sunucusu bulmak, isteği proxy sunucusuna gönderiyoruz, proxy sunucusu yabancı web sitesini ziyaret ediyor ve ardından erişilen verileri bize iletiyor!

Yukarıda bahsedilen proxy modu, ileri proxy olarak adlandırılır.İleri proxy'nin en büyük özelliği, istemcinin erişilecek sunucu adresi konusunda çok net olmasıdır; sunucu yalnızca isteğin hangi proxy sunucudan geldiğini bilir, ancak hangi belirli istemciden geldiğini bilmez; ileri proxy Mod, gerçek müşteri bilgilerini korur veya gizler.

görüntü

Ters vekil

İleriye dönük bir proxy'nin ne olduğunu anladıktan sonra, ters proxy'nin kullanımına bakmaya devam edelim. Örneğin, büyük göksel hanedanlığımın belirli bir hazine web sitesi. Web sitesine her gün aynı saatte bağlanan ziyaretçi sayısı arttı ve tek bir sunucu, insanların artan talebini karşılamaktan çok uzak. Satın alma arzusu var ve şu anda tanıdık bir terim var: dağıtılmış dağıtım; yani, ziyaretçi sayısını sınırlama sorunu birden fazla sunucu dağıtarak çözülür; bir hazine web sitesindeki işlevlerin çoğu, ters proxy uygulaması için nginx kullanılarak da doğrudan uygulanır. Evet ve nginx ve diğer bileşenleri kapsülledikten sonra uzun bir ad verilir: Tengine. İlgilenen çocuklar belirli bilgileri görüntülemek için Tengine'in resmi web sitesini ziyaret edebilir:

Peki, ters proxy dağıtılmış küme işlemlerini ne şekilde uygular? Öncelikle şematik bir diyagrama bakalım:

görüntü

Yukarıdaki diyagramdan açıkça görebilirsiniz, nginx sunucusu, sunucuya birden çok istemci tarafından gönderilen talepleri alır ve bunları belirli kurallara göre işlenmek üzere arka uç iş işleme sunucusuna dağıtır. Bu noktada ~ isteğin kaynağı istemcidir, ancak isteği hangi sunucunun işlediği açık değildir, nginx ters proxy rolünü oynar

Ters proxy, esas olarak sunucu kümelerinin dağıtılmış dağıtımı durumunda kullanılan ters proxy, sunucu bilgilerini gizler!

Proje sahnesi

Normalde, gerçek proje işlemindeyken, ileri vekil sunucu ve ters vekil bir uygulama senaryosunda mevcut olabilir. Hedef sunucuya erişim için ileri vekil vekil istemcisi isteği, hedef sunucu bir ters basit ilgi sunucusudur , Ters proxy birden çok gerçek iş işleme sunucusu. Spesifik topoloji aşağıdaki gibidir:

görüntü

2. Yük Dengeleme

Sözde proxy sunucusu kavramını daha önce netleştirdik. Sonra, nginx bir ters proxy sunucusu rolünü oynayacak.İstek dağıtımı için hangi kuralları kullanıyor? Kullanılmayan proje uygulama senaryoları için dağıtım kuralları kontrol edilebilir mi?

İstemci tarafından gönderilen ve burada bahsedilen nginx ters proxy sunucusu tarafından alınan istek sayısı, bahsettiğimiz yüktür

İstek sayısı, bir dengeleme kuralı olan belirli kurallara göre işlenmek üzere farklı sunuculara dağıtılır.

Bu nedenle sunucunun aldığı taleplerin kurallara göre dağıtılması işlemine yük dengeleme denir.

Yük dengeleme Gerçek proje operasyon sürecinde, donanım yük dengeleme ve yazılım yük dengeleme vardır.Donanım yük dengeleme, nispeten pahalı ve pahalı olan F5 yük dengeleme gibi sabit yük olarak da adlandırılır, ancak verilerin kararlılığı ve güvenliği vb. Çok iyi bir garanti var. China Mobile ve China Unicom gibi şirketler operasyon için sert yükü seçecek; daha fazla şirket maliyet nedenlerinden dolayı yazılım yük dengelemesini kullanmayı tercih edecek.Yazılım yük dengeleme, ana bilgisayar donanımı ile birlikte mevcut teknolojiyi kullanır Bir mesaj kuyruğu dağıtım mekanizması uygulanmıştır

görüntü

Nginx tarafından desteklenen yük dengeleme planlama algoritması aşağıdaki gibidir:

  • Ağırlık yoklama (varsayılan): Alınan istekler sırayla farklı arka uç sunuculara atanır.Kullanım sırasında belirli bir arka uç sunucusu kapalı olsa bile, nginx sunucuyu otomatik olarak kuyruktan kaldırır ve kabul durumunu ister Hiçbir şekilde etkilenmeyecektir. Bu şekilde, farklı sunuculardaki isteklerin tahsis oranını ayarlamak için farklı arka uç sunucular için bir ağırlık değeri ayarlayabilirsiniz; ağırlık verileri ne kadar büyükse, isteğe tahsis edilme olasılığı o kadar artar; ağırlık değeri, Esas olarak, gerçek çalışma ortamındaki farklı arka uç sunucu donanım yapılandırmaları için ayarlanır.
  • ip_hash: Her istek, başlatan istemcinin ipinin hash sonucuna göre eşleştirilir.Bu algoritma, sabit bir IP adresine sahip bir istemci tarafından her zaman aynı arka uç sunucuya erişecek ve bu da küme dağıtım ortamındaki oturumu belirli bir ölçüde çözecektir. Paylaşma sorunu.
  • adil: Planlama algoritmasını akıllıca ayarlayın, istek işlemeden arka uç sunucunun yanıtına kadar olan süreye göre atamayı dinamik olarak dengeleyin, kısa yanıt süresine ve yüksek işlem verimliliğine sahip sunucunun isteğe tahsis edilme olasılığı yüksektir ve uzun yanıt süresi ve düşük işlem verimliliği olan sunucu tahsis edilir Birkaç istek; ilk ikisinin avantajlarını birleştiren bir planlama algoritması. Ancak nginx'in varsayılan olarak adil algoritmayı desteklemediğine dikkat edilmelidir. Bu zamanlama algoritmasını kullanmak istiyorsanız, lütfen upstream_fair modülünü kurun
  • url_hash: Ziyaret edilen url'nin karma sonucuna göre istekleri ayırın. İstenen her url, nginx statik sunucu olarak kullanıldığında önbellek verimliliğini artırabilen sabit bir arka uç sunucusuna işaret eder. Ayrıca nginx'in bu zamanlama algoritmasını varsayılan olarak desteklemediğini unutmayın, kullanmak istiyorsanız nginx hash paketini yüklemeniz gerekir.
  • Nginx kurulumu

    1. Windows kurulumu

    Resmi web sitesi indirme adresi:

    https://nginx.org/en/download.html

    Aşağıdaki şekilde gösterildiği gibi, nginx sıkıştırılmış paketinin karşılık gelen sürümünü indirin ve onu yazılımın bilgisayarınızda depolandığı klasöre açın.

    görüntü

    Açma işlemi tamamlandıktan sonra, dosya dizini yapısı aşağıdaki gibidir:

    görüntü

    Nginx'i başlatın

    1) nginx sunucusunu başlatmak için doğrudan dizindeki nginx.exe'ye çift tıklayın

    2) Komut satırı bu klasöre sayılır ve nginx komutu yürütülür ve nginx sunucusu doğrudan başlatılır

    D: /resp_application/nginx-1.13.5 > nginx

    görüntü

    Nginx'i ziyaret edin

    Tarayıcıyı açın, adresi girin: http: // localhost, sayfayı ziyaret edin, ziyaretin başarılı olduğunu gösteren aşağıdaki sayfa görünür

    görüntü

    Nginx'i durdur

    Komut satırından nginx kök dizinini girin ve sunucuyu durdurmak için aşağıdaki komutu yürütün:

    Nginx sunucusunu zorla durdurun, işlenmemiş veri varsa atın

    D: /resp_application/nginx-1.13.5 > nginx -s durdur

    Nginx sunucusunu nazikçe durdurun, işlenmemiş veri varsa işlemin tamamlanmasını ve durmasını bekleyin

    D: /resp_application/nginx-1.13.5 > nginx -s çık

    görüntü

    2. ubuntu kurulumu

    Normal yazılım yükleme yöntemine göre, aşağıdaki komutla doğrudan kurun:

    $ sudo apt-get install nginx

    görüntü

    Kurulum tamamlandı. / Usr / sbin / dizininde nginx komutunun bulunduğu dizin ve / etc / nginx / dizininde nginx sunucusunu ve yük dengeleme bilgilerini yapılandırmak için kullanılan tüm nginx yapılandırma dosyaları var.

    Nginx işleminin başlatılıp başlatılmadığını kontrol edin

    $ ps -ef | grep nginx

    Nginx, mevcut ana bilgisayarın CPU'sunun çekirdek sayısına göre karşılık gelen işlem sayısını otomatik olarak oluşturacaktır (mevcut ubuntu ana bilgisayarı 2 çekirdekli 4 iş parçacıklı bir yapılandırmaya sahiptir)

    görüntü

    Açıklamalar: Burada başlatılan hizmet süreçleri aslında 4 işlemdir, çünkü nginx süreci başladığında, resmi sürecin anormal bir şekilde sonlandırılmasını önlemek için bir arka plan programı eşlik edecektir; nginx kalıtımı sona erdikten sonra daemon geri dönerse, İşlemi otomatik olarak yeniden başlatın.

    Arka plan programı süreci genellikle ana süreç olarak adlandırılır ve iş süreci işçi süreci olarak adlandırılır.

    Nginx server komutunu başlatın

    Nginx'in doğrudan yürütülmesi, sunucuyu varsayılan yapılandırma dosyasına göre başlatacaktır.

    $ nginx

    görüntü

    Nginx servis komutunu durdur

    Windows sisteminin yürütme süreci ile aynı, iki durdurma yöntemi

    $ nginx -s stop veya $ nginx -s çıkın

    görüntü

    Yüklemeyi yeniden başlat

    Ayrıca nginx'i yeniden başlatmak veya dosyaları yeniden yüklemek için yeniden aç ve yeniden yükle komutlarını da kullanabilirsiniz.

    3. mac os kurulumu

    Nginx'i doğrudan brew aracılığıyla kurabilir veya tar.gz sıkıştırılmış paketini indirebilirsiniz.

    Doğrudan demleme yoluyla yükleyin

    demlemek nginx yüklemek

    Kurulum tamamlandıktan sonra, sonraki komut işlemleri, sunucu başlatma, işlem görünümü, sunucuyu durdurma, sunucuyu yeniden başlatma ve dosya yükleme komutlarının tümü tutarlıdır.

    nginx yapılandırması

    Nginx, çok güçlü bir web sunucusuna ek olarak bir ters proxy sunucusunun yanı sıra bir posta sunucusu vb.

    Proje kullanımında en çok kullanılan üç temel işlev ters proxy, yük dengeleme ve statik sunucudur.

    Bu üç farklı işlevin kullanımı, nginx'in yapılandırmasıyla yakından ilgilidir. Nginx sunucusunun yapılandırma bilgileri esas olarak nginx.conf yapılandırma dosyasında yoğunlaşmıştır ve tüm yapılandırılabilir seçenekler kabaca aşağıdaki bölümlere ayrılmıştır.

    ana # Global yapılandırma olaylar {# nginx çalışma modu yapılandırması } http {# http ayarları .... sunucu {# Sunucu ana bilgisayar yapılandırması .... konum {# Yönlendirme yapılandırması .... } konum yolu { .... } konum diğer yol { .... } } server { .... yer { .... } } yukarı akış adı {# Yük dengeleme yapılandırması .... } }

    Yukarıdaki yapılandırma dosyasında gösterildiği gibi, esas olarak 6 bölümden oluşur:

  • main: nginx global bilgilerini yapılandırmak için kullanılır
  • olaylar: nginx çalışma modunun yapılandırılması için kullanılır
  • http: bazı http protokol bilgilerini yapılandırmak için kullanılır
  • sunucu: Sunucu erişim bilgilerini yapılandırmak için kullanılır
  • konum: erişim yönlendirmesini yapılandırmak için kullanılır
  • yukarı akış: yük dengeleme için yapılandırma
  • ana modül

    Aşağıdaki yapılandırma kodunu inceleyin

    # kullanıcı, kimse, hiç kimse; işçi_işlemleri 2; # error_log günlükleri / error.log # error_log günlükleri / error.log bildirimi # error_log günlükleri / error.log bilgileri # pid günlükleri / nginx.pid worker_rlimit_nofile 1024;

    Yukarıdaki konfigürasyonlar, ana global konfigürasyon modülünde saklanan tüm konfigürasyon öğeleridir.

    • user, nginx alt işleminin çalıştırdığı kullanıcı ve kullanıcı grubunu ve varsayılan olarak kimse hesabının çalıştırılmadığını belirtmek için kullanılır
    • worker_processes, nginx tarafından açılacak alt işlemlerin sayısını belirtir ve işlem sırasında her işlemin bellek tüketimini izler (genellikle birkaç M ila on M) ve bunu gerçek duruma göre ayarlar, genellikle sayı, CPU çekirdeği sayısının tam sayı katıdır.
    • error_log, hata günlük dosyasının konumunu ve çıktı düzeyini tanımlar [debug / info / notice / warn / error / crit]
    • pid, işlem kimliğinin depolama dosyasının konumunu belirtmek için kullanılır
    • worker_rlimit_nofile, bir işlemin açabileceği maksimum dosya sayısının açıklamasını belirtmek için kullanılır

    olay modülü

    Kuru ürünler

    Etkinlik { işçi_bağlantıları 1024; multi_accept on; epoll kullanın; }

    Yukarıdaki yapılandırma, nginx sunucusunun çalışma modunun bazı işlem yapılandırması içindir.

    • worker_connections, aynı anda alınabilecek maksimum bağlantı sayısını belirtir.Burada, maksimum bağlantı sayısının çalışan süreçlerle birlikte belirlendiğine dikkat edilmelidir.
    • Multi_accept yapılandırması, nginx'in yeni bir bağlantı bildirimi aldıktan sonra mümkün olduğunca çok bağlantıyı kabul ettiğini belirtir.
    • Kullanım epoll yapılandırması iplik yoklama yöntemini belirtir, eğer linux2.6 + ise, epoll kullanın, Mac gibi BSD ise lütfen Kqueue kullanın

    http modülü

    Bir web sunucusu olarak http modülü nginx'in temel modülüdür ve birçok yapılandırma öğesi vardır. Donanım bilgilerine göre uygun şekilde yapılandırılması gereken birçok gerçek iş senaryosu projede ayarlanacaktır. Normal koşullar altında, varsayılan yapılandırmayı kullanın. !

    http { ## # Temel yapılandırma ## dosya gönder; tcp_nopush açık; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens kapalı; # server_names_hash_bucket_size 64; # server_name_in_redirect off; /etc/nginx/mime.types dahil; default_type uygulaması / sekizli akışı; ## # SSL sertifika yapılandırması ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # SSLv3 düşüyor, ref: POODLE ssl_prefer_server_ciphers açık; ## # Günlük yapılandırması ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip sıkıştırma yapılandırması ## gzip açık; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied herhangi biri; # gzip_comp_level 6; # gzip_buffers 168k; # gzip_http_version 1.1; # gzip_types metin / düz metin / css uygulaması / json uygulaması / javascript text / xml application / xml application / xml + rss text / javascript; ## # Sanal ana bilgisayar yapılandırması ## /etc/nginx/conf.d/*.conf dahil; dahil / etc / nginx / sites-etkin / *;
  • Temel yapılandırma
  • dosya gönderme açık: Dosyayı göndermek için yapılandırın ve dosyanın geri yazma işlemini uygulamada tamamlamak yerine tamamlamak için veri arabelleğine teslim edin, bu performans iyileştirmede faydalıdır tc_nopush on: nginx'in tüm başlık dosyalarını ayrı ayrı göndermek yerine tek bir pakette göndermesine izin verin tcp_nodelay on: nginx'in verileri önbelleğe almasına izin vermeyin, ancak bölüm bölüm gönderelim. Veri aktarımının gerçek zamanlı gereksinimleri varsa, yapılandırabilirsiniz.Küçük bir veri bölümü gönderdikten sonra, dönüş değerini hemen alabilirsiniz, ancak kötüye kullanmayın. keepalive_timeout 10: İstemciye bir bağlantı zaman aşımı süresi atayın ve sunucu bu süre geçtikten sonra bağlantıyı kapatacaktır. Genelde priz süresi daha kısadır ve bu da nginx'in daha sürdürülebilir çalışmasını sağlayabilir. client_header_timeout 10: İstek başlığının zaman aşımı süresini ayarlayın client_body_timeout 10: İstek gövdesinin zaman aşımı süresini ayarlayın send_timeout 10: İstemci yanıt zaman aşımı süresini belirtin. İstemcinin iki işlemi arasındaki aralık bu süreyi aşarsa, sunucu bağlantıyı kapatır limit_conn_zone $ binary_remote_addr zone = addr: 5m: Çeşitli anahtarları kaydetmek için kullanılan paylaşılan belleğin parametrelerini ayarlayın, limit_conn adres 100: Belirli bir anahtar için maksimum bağlantı sayısını ayarlayın server_tokens: nginx'in daha hızlı çalışmasını sağlamayacak olsa da, hata sayfasındaki nginx sürüm istemini kapatabilirsiniz, bu da web sitesi güvenliğini artırmak için iyidir. include /etc/nginx/mime.types: geçerli dosyaya başka bir dosya eklemek için yönergeyi belirtin default_type application / octet-stream: Varsayılan olarak işlenen dosya türünün ikili olabileceğini belirtir type_hash_max_size 2048: Karmaşık veriler, üç sütunun çakışma oranını etkiler, değer ne kadar büyük olursa, o kadar çok bellek tüketilir, karma anahtar çakışma oranı azalır ve geri alma hızı daha hızlı olur; değer ne kadar küçükse, anahtar daha az bellek kullanır, çakışma oranı o kadar yüksek olur ve geri alma hızı o kadar yüksek olur Yavaşlatmak
  • Günlük yapılandırması
  • access_log günlükleri / access.log: Erişim kayıtlarını depolamak için günlüğü ayarlayın error_log günlükleri / error.log: Hata oluşma günlüğünü saklamak için ayarlayın
  • SSL sertifikası şifreleme
  • ssl_protocols: komut, belirli bir şifreleme protokolünü başlatmak için kullanılır, nginx, sürüm 1.1.13 ve 1.0.12 SSLv3 TLSv1 TLSv1.1 TLSv1.2, TLSv1.1 ve TLSv1.2'den sonra varsayılan olarak ssl_protocols'u kullanır, TLSv1.1 ve TLSv1.2, OpenSSL'yi sağlamalıdır > = 1.0.1, SSLv3 hala birçok yerde kullanılıyor, ancak saldırıya uğrayan birçok güvenlik açığı var. ssl sunucu şifrelerini tercih eder: Anlaşmalı şifreleme algoritmasını ayarlarken, tercihen istemci tarayıcısının şifre paketi yerine sunucumuzun şifre paketi kullanılır.
  • Sıkıştırma yapılandırması
  • gzip, nginx'e verileri gzip sıkıştırması biçiminde göndermesini söyler. Bu, gönderdiğimiz veri miktarını azaltacaktır. gzip_disable, belirtilen istemci için gzip işlevini devre dışı bırakır. Çözümümüzü geniş çapta uyumlu hale getirmek için IE6 veya daha düşük bir değere ayarladık. gzip_static, nginx'e kaynakları sıkıştırmadan önce önceden gzip ile işlenmiş kaynakları aramasını söyler. Bu, dosyalarınızı önceden sıkıştırmanızı (bu örnekte açıklanmıştır) gerektirir ve en yüksek sıkıştırma oranını kullanmanıza olanak tanır, böylece nginx'in artık bu dosyaları sıkıştırmasına gerek kalmaz (daha ayrıntılı gzip_static bilgileri için lütfen burayı tıklayın) . gzip_proxied, isteklere ve yanıtlara göre yanıt akışlarının sıkıştırılmasına izin verir veya bunu yasaklar. Herhangi birini ayarladık, bu da tüm isteklerin sıkıştırılacağı anlamına gelir. gzip_min_length, verilerin sıkıştırılmasını sağlamak için minimum bayt sayısını belirler. Bir istek 1000 bayttan azsa, onu sıkıştırmasak iyi olur çünkü bu küçük verileri sıkıştırmak, bu isteği işleyen tüm işlemlerin hızını düşürecektir. gzip_comp_level, verilerin sıkıştırma düzeyini belirler. Bu seviye 1-9 arasında herhangi bir değer olabilir, 9 en yavaştır ancak sıkıştırma oranı en büyüktür. Bir uzlaşma ayarı olan 4'e ayarladık. gzip_type, sıkıştırılacak veri biçimini ayarlar. Yukarıdaki örnekte zaten bazıları var ve daha fazla format ekleyebilirsiniz.
  • Dosya önbellek yapılandırması
  • open_file_cache Önbelleği açarken, maksimum önbellek sayısını ve önbellek süresini de belirtir. Nispeten yüksek bir maksimum süre ayarlayabiliriz, böylece 20 saniyeden fazla hareketsizlikten sonra bunları temizleyebiliriz. open_file_cache_valid open_file_cache'de doğru bilgileri kontrol etmek için aralığı belirtin. open_file_cache_min_uses, open_file_cache içindeki talimat parametresinin etkin olmadığı süre boyunca minimum dosya sayısını tanımlar. open_file_cache_errors, yapılandırmaya yeniden dosya eklemek dahil, bir dosya ararken hata bilgilerinin önbelleğe alınıp alınmayacağını belirtir. Ayrıca farklı dosyalarda tanımlanan sunucu modüllerini de dahil ettik. Sunucu modülünüz bu konumlarda değilse, doğru konumu belirtmek için bu satırı değiştirmeniz gerekir.

    sunucu modülü

    Srever modül yapılandırması, bir sanal sunucunun yapılandırma bilgileri olan bir sanal erişim ana bilgisayarını tanımlamak için kullanılan http modülündeki bir alt modüldür.

    server { 80 dinle; server_name localhost 192.168.1.100; kök / nginx / www; index index.php index.html index.html; karakter kümesi utf-8; access_log günlükleri / access.log; error_log günlükleri / error.log; ... }

    Temel yapılandırma bilgileri aşağıdaki gibidir:

    • sunucu: Bir sanal konağın yapılandırması, birden çok sunucu tek bir http içinde yapılandırılabilir
    • server_name: ip adresini veya etki alanı adını belirtmek için kullanılır, birden fazla konfigürasyon boşluklarla ayrılır
    • kök: tüm sunucu sanal konağının kök dizinini, geçerli ana bilgisayardaki tüm web projelerinin kök dizinini temsil eder
    • indeks: kullanıcı web sitesini ziyaret ettiğinde global ana sayfa
    • karakter kümesi: www / yolda yapılandırılan web sayfasının varsayılan kodlama biçimini ayarlamak için kullanılır
    • access_log: sanal ana sunucuda erişim günlüğünün depolama yolunu belirtmek için kullanılır
    • error_log: sanal ana sunucudaki erişim hatası günlüğünün depolama yolunu belirtmek için kullanılır

    konum modülü

    Konum modülü, nginx yapılandırmasındaki en yaygın yapılandırmadır ve esas olarak yönlendirme erişim bilgilerini yapılandırmak için kullanılır

    Yönlendirme erişim bilgisi yapılandırmasında ters proxy, yük dengeleme vb. Gibi çeşitli işlevlerle ilişkilendirilir, bu nedenle konum modülü de çok önemli bir yapılandırma modülüdür.

    temel yapılandırma

    yer / { kök / nginx / www; index index.php index.html index.htm; }

    location /: kök dizine eşleşen erişimi gösterir

    root: Kök dizine erişirken sanal konağın web dizinini belirtmek için kullanılır

    dizin: Belirli bir kaynak belirtilmediğinde varsayılan olarak görüntülenen kaynak dosyalarının listesi

    Ters proxy yapılandırması

    İstemci erişimini şeffaf hale getirmek için proxy_set yapılandırması aracılığıyla ters proxy proxy sunucu erişim modu aracılığıyla

    yer / { proxy_pass http: // localhost: 8888; proxy_set_header X-gerçek-ip $ remote_addr; proxy_set_header Ana Bilgisayar $ http_host; }

    uwsgi yapılandırması

    Wsgi modunda sunucu yapılandırması erişim modu

    yer / { uwsgi_params dahil; uwsgi_pass localhost: 8888 }

    yukarı akış modülü

    Yukarı akış modülü temel olarak yük dengelemenin yapılandırılmasından sorumludur ve istekleri varsayılan döngüsel zamanlama yöntemi aracılığıyla arka uç sunucusuna dağıtır

    Basit konfigürasyon aşağıdaki gibidir

    yukarı akış adı { ip_hash; sunucu 192.168.1.100:8000; sunucu 192.168.1.100:8001 kapalı; sunucu 192.168.1.100:8002 max_fails = 3; sunucu 192.168.1.100:8003 fail_timeout = 20s; sunucu 192.168.1.100:8004 max_fails = 3 fail_timeout = 20s; }

    Temel yapılandırma bilgileri aşağıdaki gibidir

    • ip_hash: İstek planlama algoritmasını belirtin, varsayılan ağırlık ağırlığı döngüsel zamanlamadır, bunu belirtebilirsiniz
    • sunucu ana bilgisayarı: bağlantı noktası: dağıtım sunucusunun liste yapılandırması
    • - aşağı: ana bilgisayarın hizmet dışı olduğunu gösterir
    • - max_fails: maksimum arıza sayısını gösterir, maksimum arıza sayısı aşılırsa hizmet askıya alınır
    • - fail_timeout: talebin kabul edilememesi durumunda, talebin belirtilen süre askıya alındıktan sonra yeniden başlatılacağını belirtir

    Yük dengeleme

    Yük dengeleme aynı zamanda Nginx'in yaygın olarak kullanılan bir işlevidir.Yük dengeleme, iş görevlerini birlikte tamamlamak için Web sunucuları, FTP sunucuları, kurumsal anahtar uygulama sunucuları ve diğer kritik görev sunucuları gibi yürütme için birden fazla işlem birimine dağıtma anlamına gelir. Basitçe ifade etmek gerekirse, 2 veya daha fazla sunucu olduğunda, istekler kurallara göre işlenmek üzere belirlenen sunuculara rastgele dağıtılır Yük dengeleme yapılandırmasının genellikle aynı anda ters proxy yapılandırması ve ters proxy aracılığıyla yük dengelemeye atlaması gerekir. Nginx şu anda 3 yük dengeleme stratejisini ve yaygın olarak kullanılan 2 üçüncü taraf stratejisini desteklemektedir.

    1. RR (varsayılan)

    Her istek, farklı arka uç sunuculara tek tek kronolojik sırayla atanır.Arka uç sunucu çalışmıyorsa otomatik olarak ortadan kaldırılabilir.

    Basit konfigürasyon:

    görüntü

    Yük dengelemenin temel kodu:

    görüntü

    Burada iki sunucu yapılandırdım tabii ki, bu aslında bir, ancak bağlantı noktası farklı ve 8081 sunucusu mevcut değil, bu da erişilemeyeceği anlamına geliyor, ancak http: // localhost'u ziyaret ettiğimizde değil Bir sorun varsa, varsayılan olarak http: // localhost: 8080'e atlayacaktır. Bunun nedeni, Nginx'in sunucunun durumunu otomatik olarak belirleyeceğidir. Sunucu erişilemezse (sunucu kapatılmışsa), bu sunucuya atlamayacaktır. Bir sunucunun askıda kaldığı ve kullanımı etkilediği durumdan kaçınmak için, çünkü Nginx varsayılan olarak RR stratejisine sahiptir, başka ayarlara ihtiyacımız yoktur.

    2. Ağırlık

    Yoklama olasılığını belirtin, ağırlık erişim oranıyla orantılıdır ve düzensiz arka uç sunucu performansı durumunda kullanılır.

    Örneğin:

    görüntü

    Ardından 10 defa, 8081'i sadece 1 defa, 8080'i ise 9 defa ziyaret edilecek.

    3. ip_hash

    Yukarıdaki iki yöntemin bir sorunu var, yani bir sonraki istek geldiğinde istek başka bir sunucuya dağıtılabilir.Programımız durumsuz olmadığında (verileri kaydetmek için oturum kullanmak), şu anda büyük bir sorun var. Bu çok sorunlu.Örneğin, oturumdaki oturum açma bilgilerini kaydederseniz, başka bir sunucuya atladığınızda tekrar oturum açmanız gerekir.Çoğu kez yalnızca bir sunucuya erişmek için bir istemciye ihtiyaç duyarız, o zaman iphash, iphash kullanmamız gerekir. Her istek, erişim ipinin karma sonucuna göre tahsis edilir, böylece her ziyaretçi, oturum problemini çözebilecek bir arka uç sunucusuna sabit erişime sahip olur.

    görüntü

    4. Adil (üçüncü şahıs)

    İstek, arka uç sunucusunun yanıt süresine göre tahsis edilir ve kısa yanıt süresine öncelik verilir.

    görüntü

    5. url_hash (üçüncü taraf)

    İstekleri, ziyaret edilen URL'nin karma sonucuna göre dağıtın, böylece her URL aynı arka uç sunucusuna yönlendirilir ve bu, arka uç sunucusu önbelleğe alındığında daha etkilidir. Yukarı akışta bir karma deyimi ekleyin ve ağırlık gibi diğer parametreler sunucu deyiminde yazılamaz. Hash_method, kullanılan karma algoritmadır.

    görüntü

    Yukarıdaki beş yük dengeleme türü farklı durumlar için geçerlidir, bu nedenle gerçek duruma göre hangi strateji modunu kullanacağınızı seçebilirsiniz. Bununla birlikte, kullanabilmek için fair ve url_hash'in üçüncü taraf modüllerle yüklenmesi gerekir. Bu makale esas olarak Nginx'in neler yapabileceğini tanıttığından, Nginx kurulum bölümü Üçlü modül bu makalede tanıtılmayacaktır.

    HTTP sunucusu

    Nginx'in kendisi de statik bir kaynak sunucudur.Sadece statik kaynaklar olduğunda Nginx'i sunucu olarak kullanabilirsiniz.Aynı zamanda çok statiktir.Nginx üzerinden gerçekleştirilebilir.Önce statik kaynak sunucu olarak Nginx'e bakalım.

    görüntü

    Bu şekilde, http: // localhost'u ziyaret ederseniz, varsayılan olarak Disk E'nin wwwroot dizini altındaki index.html'ye erişirsiniz.Bir web sitesi sadece statik bir sayfaysa, dağıtım bu şekilde gerçekleştirilebilir.

    Dinamik ve statik ayırma

    Dinamik ve statik ayırma, dinamik web sitelerindeki dinamik web sayfalarının, sürekli kaynakları belirli kurallara göre sürekli değişen kaynaklardan ayırt etmesine izin vermektir.Dinamik ve statik kaynaklar bölündükten sonra, bunları statik kaynakların özelliklerine göre önbelleğe alabiliriz. Bu, statik web sitesi işlemenin temel fikridir.

    görüntü

    Bu şekilde, wwwroot dizinine HTML, pictures, css ve js koyabiliriz, tomcat ise yalnızca jsp ve isteklerin işlenmesinden sorumludur.Örneğin, sonekimiz gif olduğunda, Nginx varsayılan olarak şu anda talep edilen dinamik görüntü dosyasını wwwroot'tan alır. Elbette buradaki statik dosyalar Nginx ile aynı sunucuda. Ters proxy ve yük dengeleme yapılandırmasını başka bir sunucuda da kullanabiliriz.En temel işlemi bulduğumuz sürece birçok yapılandırma çok basittir. Yukarı. Ek olarak, yerelleştirme aslında normal bir ifadedir, bu nedenle çok esnektir.

    Yönlendirme vekili

    Forward proxy, istemci ile kaynak sunucu arasında bulunan bir sunucu anlamına gelir. Kaynak sunucudan içerik elde etmek için, istemci proxy'ye bir istek gönderir ve hedefi (kaynak sunucu) belirtir ve ardından proxy bunu kaynak sunucuya iletir. Elde edilen içeriği müşteriye isteyin ve iade edin. Sunucunuzu proxy sunucusu olarak kullanmanız gerektiğinde, ileri proxy'yi uygulamak için Nginx'i kullanabilirsiniz, ancak şu anda Nginx'in bir sorunu var, yani HTTPS'yi desteklemiyor. HTTPS ileri proxy'yi yapılandırmak için Baidu'm olmasına rağmen, ancak sonuna kadar Yine de bir temsilci olarak hareket edemediğimi fark ettim. Elbette, yanlış yapılandırmış olabilirim, bu yüzden doğru yöntemi bilen yoldaşların açıklamak için bir mesaj bırakacağını umuyorum.

    görüntü

    Çözümleyici, iletme proxy'sini yapılandıran DNS sunucusudur ve listen, iletme proxy'sinin bağlantı noktasıdır Yapılandırıldıktan sonra, IE veya diğer proxy eklentilerinde proxy yapmak için sunucu ip + bağlantı noktası numarasını kullanabilirsiniz.

    Yazar: Shizherusi Xiangxi

    Bağlantı: https://www.jianshu.com/p/3ca785008a20

    Ağustos ayında piyasaya sürülen yeni nesil BMW Z4 konsept otomobili Z5 yanlış bilgi
    önceki
    Broyler ne kadar güçlü? Faker'i çıkış yapar yapmaz öldür ve OGN'nin onun için kuralları değiştirmesine izin ver!
    Sonraki
    Fujiwara Hiroshi, A-COLD-WALL * x NIKE Hava Kuvvetleri 1'i ortaya çıkardı. Satın almak doğru değil mi?
    Vivo aynı zamanda "uygun maliyetli" oynamaya başladığında iQOO telefonların doğuşu ne anlama geliyor?
    Qi Zu neden geri döndü? Real Madrid başkanı ademi merkeziyetçilik + 300 milyon euro bütçe + 15 milyon euro yıllık maaş
    Gürleyen ağızdan ağza, Bollywood suç gerilim filmi "Cennetin Görevi" Kuzey Film Festivali'nde grev yaptı
    Bu eski arabalardan kaç tanesi uzun yıllardır üretimden kaldırıldı?
    Nginx yerleşik modül açıklaması
    Theshy, 19. yaş gününün arifesinde hayranları tarafından "terk edildi" çünkü yanındaki insanlar onu cezbetmişti.
    Zaobao: WWDC2019 zamanı açıklandı / Xiaomi 9 şeffaf özel sürümü satışta iptal edildi
    "Örümcek Adam: Evden Uzakta" Gizemli Karakter Çok Tartışılıyor
    Baş editörün karısı bunun büyük olacağını söyledi, bu yüzden kendim yapmak zorunda kaldım!
    ACRONYM x NIKE Air VaporMax ortaya çıktı! Bu sefer en yakışıklı renk şeması olacak mı? !
    Uygun bir tam ekran cep telefonu nasıl seçilir, bu makale yeterli
    To Top