Nginx Yüksek performanslı bir HTTP ve ters proxy sunucusu ve ayrıca bir IMAP / POP3 / SMTP proxy sunucusudur
Nginx'in apache'ye göre avantajları:
Apache'nin nginx'e göre avantajları:
Nginx (motorx olarak telaffuz edilir), performans optimizasyonu için özel olarak geliştirilmiştir.En bilinen avantajları, kararlılığı ve düşük sistem kaynak tüketiminin yanı sıra HTTP eşzamanlı bağlantıları için yüksek işleme kapasitesidir (tek bir fiziksel sunucu 30.000 ila 50.000 eşzamanlı isteği destekleyebilir ). Bu nedenle sosyal ağ siteleri, haber bilgileri, e-ticaret ve sanal barındırma gibi hizmetler sunan çok sayıda şirket, WEB hizmetlerini sağlamak için Ngnix'i seçmiştir.
2. Nginx kurulumu ve operasyon kontrolü:
Şu anda, Nginx'in en son kararlı sürümü 1.0.8'dir ve geliştirme sürümü 1.1.6'dır. Yükleme dosyaları, resmi web sitesinden indirilebilir. Aşağıda, nginx'in kurulum ve işletim kontrolünü tanıtmak için bir örnek olarak kararlı sürüm alınmıştır. .
Nginx'i derleyin ve yükleyin
1) Destekleyici yazılımı yükleyin:
Nginx'in konfigürasyonu ve çalışması, pcre, zlib ve diğer yazılım paketlerinin desteğine ihtiyaç duyar.Bu nedenle, bu yazılımların geliştirme paketleri (devel), Nginx kurulumunun sorunsuz bir şekilde tamamlanmasını sağlamak için ilgili kitaplıkları ve başlık dosyalarını sağlamak için önceden kurulmalıdır.
# yum -y pcre-devel zlib-devel'i yükle
2) Çalışan kullanıcılar ve gruplar oluşturun:
Nginx hizmet programı varsayılan olarak hiç kimse olarak çalışmaz.Erişim haklarını daha doğru bir şekilde kontrol etmesi, esnekliği artırması ve güvenlik risklerini azaltması için özel bir kullanıcı hesabı oluşturulması tavsiye edilir.
Örneğin: nginx adlı bir kullanıcı oluşturun, bir ana dizin oluşturmayın ve kabuk ortamında oturum açmak yasaktır.
# useradd -M -s / sbin / nologin nginx
3) nginx'i derleyin ve kurun:
Nginx kaynak paketini serbest bırakın
# tar zfxv nginx-1.0.8.tar.gz
Derlemeden önce yapılandırma:
# cd nginx-1.0.8
# ./configure --prefix = / usr / local / nginx --user = nginx --group = nginx --with-http_stub_status_module
Not: Yapılandırmadan önce lütfen şu adrese bakın: ./configure - talimatlar için yardım
Derleyin ve kurun:
Bu noktada, Nginx kurulumu tamamlanmıştır.Nginx sunucusunu daha kullanışlı hale getirmek için, nginx ana programı için bir bağlantı dosyası oluşturabilirsiniz, böylece yönetici, Nginx'in ana programını çağırmak için doğrudan nginx komutunu çalıştırabilir.
# ln -s / usr / local / nginx / sbin / nginx / usr / local / sbin /
# ls -l / usr / local / sbin / nginx
Nginx operasyon kontrolü:
Apache'nin ana programı httpd'ye benzer şekilde, Nginx'in ana programı da yanlış veya yanlış yapılandırmayı bulmak için yapılandırma dosyasını kontrol etmek için "-t" seçeneğini sunar. Yapılandırma dosyası nginx.conf, varsayılan olarak kurulum dizininin conf / alt dizininde bulunur. Diğer konumlarda bulunan yapılandırma dosyalarını kontrol etmek için, yolu belirtmek için "-c" seçeneğini kullanabilirsiniz.
# nginx -t
Nginx'i başlatın ve durdurun:
Nginx sunucusunu başlatmak için doğrudan nginx'i çalıştırın. Bu yöntem varsayılan yapılandırma dosyasını kullanacaktır. Başka bir yapılandırma dosyası kullanmak istiyorsanız, yolu belirtmek için "-c yapılandırma dosyası yolu" seçeneğini eklemeniz gerekir. Sunucuya httpd gibi başka bir WEB servis yazılımı yüklenmişse, çakışmaları önlemek için önlemlerin alınması gerektiği unutulmamalıdır.
Nginx programının izleme durumunu kontrol ederek veya tarayıcıda bu WEB hizmetine erişerek (varsayılan sayfada "nginx'e hoş geldiniz!" Görüntülenecektir), Nginx hizmetinin normal şekilde çalışıp çalışmadığını onaylayabilirsiniz.
Veya elinks tarayıcısını kullanın (elinks yazılım paketini yüklemeniz gerekir. Yum-y installelinks) [nss_compat_ossl and elinks]
Not: Güvenlik duvarında bağlantı noktası 80 iletişimine izin verin.
Nginx hizmetini durdurun:
#Killall -9 nginx
Nginx işlemi çalışırken, PID numarası, varsayılan olarak logs / dizinindeki nginx.pid dosyasında saklanır. Yani bunun yerine kill komutunu kullanırsanız, bunu nginx.pid dosyasındaki PID numarasına göre de kontrol edebilirsiniz.
Nginx hizmetini başlatma, durdurma, yeniden yükleme ve diğer işlemleri daha rahat hale getirmek için, RHEL sisteminin yönetim alışkanlıklarına daha uygun olan Nginx hizmet betikleri yazabilir ve yönetim için chkconfig ve hizmet araçlarını kullanabilirsiniz.
Komut dosyası içeriği aşağıdaki gibidir:
#! / bin / bash
# chkconfig: 23459920
# description: Nginx Hizmet Kontrol Komut Dosyası
PROG = "/ usr / local / nginx / sbin / nginx"
PIDF = "/ usr / local / nginx / logs / nginx.pid"
durumda "$ 1"
Başlat)
$ PROG -t > / dev / null
ise
sonra
PROG
echo "Nginx hizmeti başlama başarısı."
Başka
$ PROG -t
fi
;;
Dur)
kill -s QUIT $ (cat $ PIDF)
echo "Nginx hizmeti durdurma başarısı."
;;
tekrar başlat)
$ 0 stop
$ 0 başlangıç
;;
Tekrar yükle)
$ PROG -t > / dev / null
ise
sonra
kill -s HUP $ (cat $ PIDF)
echo "Nginx yapılandırma başarısını yeniden yükle."
Başka
$ PROG -t
fi
;;
*)
echo "Kullanım: $ 0 {başlat | durdur | yeniden başlat | yeniden yükle}"
çıkış 1
esac
Aşağıdaki ekran görüntüsü:
Not: Aşırı yük yapılandırmasını belirtmek için kill veya killall komutuyla HUP sinyali gönderin, yeni yapılandırmayla yeni bir iş süreci başlatın
Eski çalışma sürecini kapatın. ÇIKIŞ sinyali, işlemden çıkmak anlamına gelir ve KILL sinyali, işlemi sonlandırmak anlamına gelir. "-S" seçeneği aracılığıyla sinyal türünü belirtin .
Sistem hizmeti olarak ekleyin.
# chmod + x /etc/init.d/nginx
# chkconfig --add nginx
Bu şekilde, Nginx sunucusunu nginx komut dosyası aracılığıyla başlatabilir, durdurabilir, yeniden başlatabilir ve yeniden yükleyebilirsiniz.
3. Yapılandırma dosyası nginx.conf:
Nginx sunucusunun ana yapılandırma dosyası nginx.conf'ta, genel yapılandırma, G / Ç olay yapılandırması ve HTTP yapılandırması dahil olmak üzere üç ana içerik vardır. Yapılandırma ifadesinin biçimi "anahtar sözcük değeri" dir (sonunda noktalı virgül ile biter), "#" İle başlayan kısım bir açıklamayı gösterir.
1) Global yapılandırma
Çeşitli konfigürasyon ifadelerinden oluşur ve belirli sınırlandırma etiketleri kullanmaz. Global konfigürasyon bölümü, çalışan kullanıcı, çalışma işlemi sayısı, hata günlüğü ve PID depolama konumu gibi temel ayarları içerir.
Ortak yapılandırma öğeleri:
usernobody; // Çalışan kullanıcı, Nginx'in çalıştıran kullanıcısı aslında derleme zamanında belirtilen nginx'tir, derleme zamanında belirtilmezse, varsayılan olarak hiç kimse olmaz
worker_processes 2; // nginx tarafından başlatılan işçi işlemlerinin sayısını belirtin, CPU sayısına göre belirtmeniz önerilir, genellikle bunun katı
worker_cpu_affinity 0000000100000010; // Her bir işleme cpu atayın.Yukarıdaki örnekte 2 işlem iki cpus'a atanmıştır.Elbette birden fazla yazabilir veya birden fazla cpu'ya bir işlem atayabilirsiniz.
worker_rlimit_nofile 102400; // Bu talimat, bir nginx işlemi tarafından açılan maksimum dosya sayısını ifade eder. Teorik değer, maksimum açık dosya sayısının (ulimit -n) nginx işlemlerinin sayısına bölünmesi olmalıdır, ancak nginx tahsis istekleri o kadar tek tip değildir, bu nedenle çoğu Ulimit -n değeri ile tutarlıdır. (Maksimum açık dosya sayısı "ulimit -n değeri" ile değiştirilebilir)
error_loglogs / error.log; // Genel hata günlüğü dosyasının konumu
pidlogs / nginx.pid; // PID dosyası konumu
2) G / Ç olay yapılandırması:
Nginx işleminin G / Ç yanıt modelini, her işlemin bağlantı sayısını ve diğer ayarları belirtmek için kullanılan işareti tanımlamak için "olayları {}" kullanın
Etkinlikler {
epool kullanın; / / epool modelini kullanın, 2.6'nın üzerindeki çekirdekler için, performansı artırmak için epool modelinin kullanılması önerilir
worker_connections 4096; // İşlem başına izin verilen maksimum bağlantı sayısı (varsayılan 1024), işlem başına bağlantı sayısı gerçek ihtiyaçlara göre belirlenmelidir, genellikle 10.000'in altında, teorik olarak nginx sunucusu başına maksimum bağlantı sayısı
worker_processes * worker_connections, sunucunun donanımına ve bant genişliğine bağlı olarak.
}
3) HTTP yapılandırması
Erişim günlükleri, HTTP bağlantı noktaları, web dizinleri, varsayılan karakter kümeleri, bağlantı tutma, sanal konaklar ve PHP ayrıştırma gibi bir dizi ayar dahil olmak üzere etiketleri tanımlamak için "http {}" kullanın. Yapılandırma ifadelerinin çoğu "servier {}" alt tanım etiketinde bulunur.
http {
#Mime türünü ayarlayın, Yani, conf / dizinindeki mime.types dosyasındaki ayarlar.
Includemime.types;
default_type uygulaması / sekizli akışı;
# Günlük biçimini ayarla
log_formatmain '$ remote_addr- $ remote_user "$ istek"'
'$ status $ body_bytes_sent "$ http_referer"
'"$ http_user_agent" "$ http_x_forwarded_for"';
# Erişim günlüğünü ayarla
access_log günlükleri / access.log main;
sendfileon; // Dosya gönderme desteği (indir)
keepalive_timeout 65; // Bağlantı zaman aşımını koruyor
#Sanal konağı kur
server {// Sanal konağı yapılandırmak için kullanılır
listen80; // Web hizmeti izleme ayarları "IP adresi: bağlantı noktası" şeklinde olabilir
server_name www.lnmp.com web sitesi adı, boşluklarla ayırarak birden fazla isim yazabilirsiniz;
location / {// Aşağıdaki yolun nasıl eşleştirileceğini gösterir
index index.html; // Varsayılan ana sayfa
root html; // Web sayfasının kök dizininin konumu. Varsayılan, Nginx kurulum dizini altındaki html / alt dizindir. Kök ifadesi, belirli bir erişim konumunun web belgesi yolunu ayarlamak için kullanılır. Gerektiğinde / var / www / html gibi diğer yollara değiştirilebilir.
}
charset gb2312; // Web sayfasının varsayılan karakter kümesi
# Bu sanal konağın erişim günlüğünü ayarlayın
access_log günlükleri / www.lnmp.com.access.log main;
error_page 500502503504 / 50x.html; // dahili hata geri bildirim sayfası
location = /50x.html {
kök html;
}
}
}
Nginx konumu
Temel sözdizimi:
konum / uri / {}
Örnek 1:
konum = / {
# Yalnızca eşleşme / sorgu.
}
yer/ {
# Tüm istekler / ile başladığından herhangi bir sorguyla eşleşir. fakat Normal ifade kuralları Ve uzun engelleme kurallarına öncelik verilecek ve sorgu ile eşleştirilecektir
}
Örnek 2:
konum ^ ~ / resimler / {
# / İmages / ile başlayan herhangi bir sorguyu eşleştirin ve aramayı durdurun. Herhangi bir normal ifade test edilmeyecektir.
}
Örnek 3:
konum ~ * \. (gif | jpg | jpeg) $ {
# Gif, jpg veya jpeg ile biten herhangi bir isteği eşleştirin.
}
4. Durum istatistikleri ve sanal ana bilgisayar uygulaması:
1) Nginx, mevcut WEB erişim durumunu geri beslemek için kullanılan yerleşik HTTP_STUB_STATUS durum istatistik modülüne sahiptir. Yapılandırma
Parametreleri derlerken, bu modülü etkinleştirmek için with-http_stub_stastus_module ekleyebilirsiniz. Nginx'in durum istatistikleri işlevini kullanmak için, yerleşik modülü etkinleştirmenin yanı sıra, nginx.conf dosyasını değiştirmeniz, erişim konumunu belirtmeniz ve stub_status yapılandırmasını açmanız gerekir. Http {} yapılandırmasının sunucu {} alt yapılandırmasına aşağıdaki yapılandırma öğelerini ekleyin:
# vim /usr/local/nginx/conf/nginx.conf
konum / durum {
stub_status açık;
erişim_ günlüğü kapalı;
auth_basic "Nginx durumu";
auth_basic_user_file /usr/local/nginx/.htpasswd;
}
Not: konum / durum // / tongji içeren herhangi bir sorguyla eşleşir
stub_statuson // Durum istatistikleri işlevini açın
Access_logoff // Bu konumda günlük kaydını kapat
Nginx, bir parola dosyası oluşturmak için Apache'nin htpasswd'sini kullanarak dizine parola doğrulaması eklemeyi destekler
htpasswd-c / usr / local / nginx / .htpasswd kullanıcı adı
Değiştirilen nginx.conf dosyasını kaydedin ve değişikliğin etkili olması için nginx hizmetini yeniden başlatın.
Yeni yapılandırma yürürlüğe girdikten sonra, durum istatistiklerini görmek için tarayıcıda Nginx sunucusunun / tongji web sitesi konumunu (http: // web sunucusu IP / durumu) ziyaret edin
Yukarıdaki şekilde gösterildiği gibi: "Etkin bağlantılar", mevcut etkin bağlantı sayısını temsil eder ve "sunucu, işlenen istekleri kabul eder", işlenen bağlantı bilgilerini temsil eder.Üç sayı sırasıyla işlenen bağlantıların sayısını, başarılı TCP el sıkışmalarının sayısını ve işlenen bağlantıların sayısını temsil eder. İstek sayısı.
İstemci erişim kontrolü:
Not: kurallara izin ver, kuralları reddet; kuralların yürütülmesi yukarıdan aşağıya doğru yürütülür.Belirli bir kural eşleştikten sonra,
Diğer kuralları kontrol edin.
2) Sanal ana bilgisayar:
Bir sanal ana sunucu oluşturmak için Nginx kullanıldığında, her sanal WEB sitesinin bağımsız bir "sunucu {}" yapılandırma bölümü vardır.
Dinleme IP adresi ve bağlantı noktası numarası ayrı ayrı belirtilebilir ve tabii ki web sitesi adı da farklıdır.
Örneğin: www.AAA.com ve www.BBB.com olmak üzere iki site oluşturmak için
İki sanal WEB ana bilgisayarı için kök dizinler oluşturun ve ana sayfayı test etmeye hazırlanın
# mkdir -p / var / www / AAA
# echo "www.AAA.com" > /var/www/AAA/index.html
# mkdir -p / var / www / BBB
# echo "www.BBB.com" > /var/www/BBB/index.html
Nginx.conf yapılandırma dosyasını ayarlayın - alan adı sanal konağı
İki WEB sitesine karşılık gelen iki "sunucu {}" alanını yapılandırın, kendi web sitesi adını, dinleme adresini ve web sitesini belirtin
Kök dizin, erişim günlüğü ve diğer bilgiler ve ardından yapılandırmayı yeniden yükleyin
server {
80 dinle;
server_name www.AAA.com AAA.com;
karakter kümesi utf-8;
access_log günlükleri / AAA.access.log main;
yer / {
kök / var / siteler / AAA;
index index.html index.php;
}
}
server {
80 dinle;
sunucu_adı www.BBB.com BBB.com;
karakter kümesi utf-8;
access_log günlükleri / BBB.access.log main;
yer / {
kök / var / siteler / BBB;
index index.html index.php;
}
}
Ölçek:
Sırasıyla www.AAA.com ve www.BBB.com üzerinden iki WEB sitesini ziyaret etmek için bir tarayıcı kullanın (alan adı çözümlemesine dikkat edin.)
Sırasıyla www.AAA.com ve www.BBB.com üzerinden iki WEB sitesini ziyaret etmek için bir tarayıcı kullanın (alan adı çözümlemesine dikkat edin.)
Yeniden yazdırma adresi:
Eser sahibi: wenzhongxiang