NGinx kullanan koçanlar için resmi hizmet. Nginx yapılandırma dosyasını bilmekten sorumlu olduğunuz Nginx komutları

En popüler web sunucularından biri

Nginx, üretkenliği nedeniyle web proxy sunucuları arasındaki büyük popülerliğinden kaynaklanmaktadır. Sunucunun birçok avantajı vardır, ancak kurulumu yeni başlayanlar için kolay olacaktır. Dosyaları, sözdizimini anlamanıza ve ayrıca Nginx'in temel parametrelerini yapılandırmanıza yardımcı olmak istiyoruz.

Dizin hiyerarşisi

Tüm sunucu yapılandırma dosyaları /etc/nginx dizininde saklanır. Ayrıca dizinin ortasında modüler yapılandırma dosyalarının yanı sıra çok sayıda klasör de bulunur.

cd /etc/nginx
ls -F
conf.d/koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params siteler etkin /

Apache kullandıysanız, sitelerin etkin olduğu ve sitelerin erişebildiği dizinlere aşina olacaksınız. Sitelerin yapılandırmasını gösterirler. Oluşturulan dosyalar kalıcı bir dizine kaydedilir. Sitelerin etkin olduğu klasör, yalnızca etkin sitelerin yapılandırmasını kaydetmek için gereklidir. Bunları bağlamak için klasörler arasında sembolik bir mesaj gereklidir. Konfigürasyonlar conf.d'ye de kaydedilebilir. Bu durumda Nginx başlatıldığında .conf uzantılı dosya yeni olarak okunacaktır. Yapılandırma dosyalarını yazarken kodu hatasız yazın ve sözdizimini düzeltin. Diğer tüm dosyalar /etc/nginx dizinine yüklenir. Yapılandırıcı, belirli süreçlerin yanı sıra ek bileşenler hakkında bilgiler içerir.

Ana Nginx yapılandırma dosyası nginx.conf'tur.

Sunucu başlatıldığında tüm yapılandırma dosyalarını okur ve bunları tek bir dosyada birleştirir. Yardım için dosyayı açın:

sudo nano /etc/nginx/nginx.conf

Ekranda aşağıdaki satırlar görünecektir:

kullanıcı www-verileri;
işçi_işlemleri 4;
pid /var/run/nginx.pid;
olaylar (
işçi_bağlantıları 768;
#Multi_accept açık;
}
http(
. . .

Persha - Nginx hakkında bazı gizli haberler. Kullanıcı www-data ifadesi, sunucuyu çalıştıran kullanıcıyı belirtir. pid yönergesi, dahili wiki'ye atanan PID işlemlerinin yönlendirilip yönlendirilmediğini gösterir. Worker_processes satırı, Nginx'in aynı anda kaç işlemi çalıştırabileceğini gösterir. Ayrıca günlükleri buraya girebilirsiniz (örneğin, hata günlüğü error_log yönergesinin bir fonksiyonu olarak listelenir). Etkinlikler bölümü aşağıda genişletilmiştir. Sunucu bağlantısını işlemek için VIN gereklidir. Bundan sonra http bloğu yeniden kurulur.

Nginx yapılandırma dosyasının yapısı

Daha basit bir dosya biçimlendirme yapısı, web sunucusu yapılandırmasında daha kolay gezinmenize yardımcı olacaktır. Yapısal bloklara bölünmüştür. Http bloğunun konfigürasyon detayları kapalı bloklar kullanılarak seviyelere bölünür. İçinde büyüyeceği Batkovsky'den yetkililerin ölümünün kokusu. Bu blok, sunucu yapılandırmasının çoğunu kaydeder. Ortasında farklı konumların bulunduğu sunucu bloklarına bölünmüşlerdir.

Nginx sunucusu kuruyorsanız, konfigürasyon bloğu ne kadar düşük genişletilirse, güç ve tehlikeden o kadar az öğenin etkileneceğini unutmayın. Durum dosyası, sunucunun çalışmasını değiştirebilecek çok sayıda seçeneğe sahiptir. Örneğin istemciye gönderilecek sıkıştırılmış dosyaları ayarlayabilirsiniz. Kimin için parametreleri yazın:

gzip'i açın;
gzip_disable "msie6";

Aynı parametrenin farklı bloklarda farklı değerler alabileceğini unutmayın. Önce ayarlayın, ardından parametreyi gerektiği gibi yeniden seçin. Değeri değiştirmek istemezsem program değerleri otomatik modda ayarlayacaktır.

Nginx.conf dosyasında kalan satırlar şunlardır:

/etc/nginx/conf.d/*.conf'u dahil edin;
/etc/nginx/sites-enabled/*'ı dahil edin;

Lütfen konum ve sunucu bloklarının bu dosyaya kaydedildiğini unutmayın. URL'ye ve belirli dosyalara ilişkin ayarları siz belirlersiniz. Bu yapı, modüler bir konfigürasyon yapısını desteklemek için gereklidir. Ortada farklı siteler için yeni dizinler ve dosyalar oluşturabilirsiniz. Ayrıca benzer dosyaları gruplandırabilirsiniz. İnceledikten sonra nginx.conf dosyasını kapatabilirsiniz.

Sanal bloklar

Apache'deki sanal konaklara benzerler. Sunucu bölümündeki bloklar, sunucu üzerinde çalışan diğer sitelerin özelliklerini içerir. Sitelerin mevcut olduğu klasörde, sunucu bloğunda hesaplamalardan sorumlu olan bir dosya bulacaksınız. Bu arada sitelere hizmet verirken ihtiyaç duyulabilecek gerekli verileri öğrenebilirsiniz.

cd siteleri mevcut
sudo nano varsayılan
sunucu(
root/usr/share/nginx/www;
indeks indeksi.html indeks.htm;
sunucu_adı yerel ana bilgisayar;
konum/(
try_files $uri $uri //index.html;
}
konum/belge/(
takma ad/usr/paylaşım/belge/;
otomatik indeks açık;
127.0.0.1'e izin ver;
Hepsini inkar etmek;
}
}

Yorum, iyi bilinen popoda düzgün bir şekilde toparlandı. Kullanım kolaylığı için her şey bölündü. Sunucu bloklarının ortasında, yay şeklinin yanına yerleştirilen ayarlar eklenir:

Bu blok, nginx.conf dosyasında yazılan, http'nin sonundaki ek include yönergesinin arkasında bulunur. Kök direktifi takip edilerek içeriğin siteye dağıtılacağı bir dizin belirlenir. Programınız muhabirin isteyeceği dosyaları arayacaktır. Başlamanın yolu şudur: /usr/share/nginx/www. Nginx satırları ve yönergeleri birbiri ardına güçlendirir. Tabelaları indiremezseniz bu kadar satır tek satır gibi okunabilir. Dizine dahil edilecek kuralları belirtmek için index yönergesini kullanın. Sunucu, yeniden inceleme sırasına göre bunları kontrol edecektir. Gerekli sayfalarla ilgileniyorsanız, lütfen index.html'ye dönün. Durum böyle değilse sunucu index.htm olarak ayarlanacaktır.

sunucu_adı kuralı

Bu, sunucu bloğunun işlenmesinden sorumlu olacak alan adlarının bir listesini içerir. Boşluklarla ayrılarak mümkün olduğu kadar çok yazılabilirler. Eğer alan adının sonuna ya da başına * koyarsanız ismi maske ile koyabilirsiniz. Yıldız, ismin bazı kısımlarını gösterir. *.com.ua girerseniz, belirlenen etki alanı bölgesinin tüm adresleri buraya yerleştirilecektir. Adresler birden fazla direktifin tanımına uyuyorsa, bu her yere uyan adrese karşılık gelir. Kaçış olursa cevap maskeyi takan kişiye verilecek. Aksi takdirde tür düzenli ifadelerle gösterilecektir. Normal dillerdeki sunucu adları yaklaşık işaretiyle (~) başlar.

Konum blokları

Bir sonraki adımda bir konum bloğumuz olacak. Şarkı söyleyen içeceklerin işlenme yöntemini belirlemek için VIN gereklidir. Kaynaklar başka herhangi bir konum bloğuna karşılık gelmiyorsa kollara atanan direktifler onlardan önce istiflenecektir. Bu bloklar kshtalt /doc/'a giden yolları içerebilir. Uri ile konum arasında yeni bir ilişki kurmak için = işareti kapatılır. Sabırlı bir yaklaşık işaretiyle, türü normal ifadelerle ayarlayabilirsiniz. ~ ayarını yaparak kayıt hassasiyetini de ayarlayabilirsiniz. Yıldız eklerseniz kayıt herhangi bir rol oynamaz.

Lütfen dikkatli olun: konum bloğu ile aynı şekilde sorarsanız kafanız karışır ve aramanız kafanız karışır. Belirtilmediği takdirde URI, konum yönergelerinin parametreleriyle eşleşecektir. Seçilen blok için URI ile eşleşen ^ ~ içeren bir blok seçilir. Bu seçenek etkinleştirilmezse sunucu en uygun kaçış yolunu seçer ve ayrıca wiki'leri arar. düzenli virüsler. İlgili şablonlardan birini seçmek için bu gereklidir. Gerçek ortaya çıkınca düzeltilecektir. Başka bir durumda bu şekilde URI'nin önünde sıkışıp kalacaktır. Ancak Nginx'in her türden daha çok hoşlandığını unutmayın. Hiçbiri olmadığından, düzenli ifadeleri ve ardından URI'yi aramaya başlayacaksınız. Eşlik ^ ~ sembollerinin kombinasyonu ile belirlenir.

try_files kuralı

Bu, dosyaların belirlenen sırayla varlığını doğrulamak için tasarlanmış çok kullanışlı bir araçtır. Bunlardan ilki, talebi işleme koyma kriterlerini karşılıyor. Sunucuya nasıl hizmet verilmesi gerektiğini belirtmek için ek parametreler kullanabilirsiniz. Yapılandırıcı aşağıdaki ayar satırına sahiptir:

try_files $uri $uri //index.html;

Bu ne anlama gelir? Konum bloğu tarafından sunulan bir istek bulunduğunda, sunucu hemen uri'yi bir dosya olarak ayrıştırmaya çalışacaktır. Bu, $uri değişimiyle sağlanacaktır. Tür yoksa uri bir katalog gibi düzenlenecektir. Sona eğik çizgi ekleyerek anlamınızı kontrol edebilirsiniz: $ uri /. Ne dosyanın ne de dizinin bulunamadığı durumlar olabilir. Bu durumda, arkasındaki dosyayı kullanmanız gerekir - index.html. Try_files kuralı, geri dönüş seçeneği olarak kalan parametreyi dondurur. Bu yüzden Danimarka dosyası sistemin içinde olmaktan dolayı suçludur. Ancak herhangi bir kaçış bulunamazsa Nginx sorunun yönünü değiştirdi. Bunu koymak için = yazın ve kodu değiştirin:

Ekstra seçenekler

Takma ad kuralını ayarlarsanız, örneğin konum bloğunun ve kök dizinin sayfalarını sunabilirsiniz. Eğer dosyalar dokümandan gerekiyorsa, bunlar /usr/share/doc/ adresinden beslenecektir. Ek olarak, autoindex on kuralı, belirtilen konum yönergesi için sunucu dizinini listelemeye başlar. Reddet ve izin ver satırlarına girerseniz, dizinlere erişimi değiştirebileceksiniz.

Yak visnovok varto Nginx'in daha da sıkı olduğunu söylüyor zengin işlevselliğe sahip araç. Çalışmanızın prensibini kavramak zaman ve çaba gerektirecektir. Robot konfigürasyonunu anladığınızda, dünyanın geri kalanındaki programların özelliklerinden yararlanabileceksiniz.

N ginx, İnternet'teki en büyük sitelerden bazılarının etkileşiminden sorumlu olan, ücretsiz, yüksek performanslı bir HTTP ve ağ geçidi proxy sunucusu olan "engine x" olarak anılır. Bağımsız bir web sunucusu olarak ve Apache ve diğer web sunucuları için bir ağ geçidi proxy sunucusu olarak kullanılabilir.

Her şeyi bilen bir geliştirici veya sistem yöneticisi olarak Nginx ile düzenli olarak çalışıyorsunuz.

Bu makale, Nginx başlatma, başlatma ve yeniden başlatma dahil olmak üzere en önemli ve sık kullanılan Nginx komutlarına bakacaktır.

Persh nіzh onurlandıracaksınız

Tüm komutlar ad veya kök altına girilmeli ve CentOS 7 ve Debian 9 gibi herhangi bir güncel Linux dağıtımında kullanılmalıdır.

Nginx'i başlat

Nginx'i başlatmak kolaydır. Sadece aşağıdaki komutu çalıştırın:

Sudo systemctl nginx'i başlat

Başarılı olduktan sonra ekip herhangi bir sonuç görmez.

Nginx türünü çalıştırmak için systemd'siz bir Linux dağıtımı kullanıyorsanız:

Sudo hizmeti nginx'i başlatıyor

Nginx hizmetini manuel olarak başlatmak yerine, sistem kilitlendiğinde başlayacak şekilde yapılandırmanız önerilir:

Sudo systemctl nginx'i etkinleştir

Zupiniti Nging

Nginx'i Durdur, bağlantı etkinleştirilirse tüm Nginx çalışan işlemlerini hızlı bir şekilde durduracaktır.

Nginx'i başlatmak için aşağıdaki komutlardan birini kullanın:

Sudo systemctl nginx'i durdur sudo hizmeti nginx'i durdur

Nginx'i yeniden başlat

Yeniden başlatma parametresi, Nginx sunucusunu başlatmanın ve başlatmanın hızlı bir yoludur.

Nginx'i yeniden başlatmak için aşağıdaki komutlardan birini Vikorize edin:

Sudo systemctl nginx'i yeniden başlat sudo hizmeti nginx'i yeniden başlat

Bu takım şüphesiz en çok galip geleceğiniz yerdir.

Nginx'i yeniden başlat

Yapılandırmasında değişiklik yaparsanız Nginx'i hemen yeniden başlatmanız gerekir.

Yeniden başlatma seçeneği, yeni bir konfigürasyon kurmak, yeni konfigürasyonla yeni iş süreçlerini başlatmak ve eski iş süreçlerini doğru bir şekilde sonlandırmaktır.

Nginx'i yeniden başlatmak için aşağıdaki komutlardan birini vikorize edin:

Sudo systemctl nginx'i yeniden yükle Sudo hizmeti nginx'i yeniden yükle

Nginx yapılandırmasını test etme

Nginx sunucusu yapılandırma dosyasında değişiklik yaptığınızda, hizmeti yeniden başlatmadan veya yeniden başlatmadan önce yapılandırmayı kontrol etmeniz önerilir.

Nginx yapılandırmanızda herhangi bir söz dizimi veya sistem hatası olup olmadığını kontrol etmek için bu komutu kullanın:

Sudo nginx -t

Visnovok buna benzer bir şeye benzeyecek.

Nginx: yapılandırma dosyası /etc/nginx/nginx.conf sözdizimi düzgün nginx: yapılandırma dosyası /etc/nginx/nginx.conf testi başarılı

Herhangi bir af varsa ekip raporu denetleyecek.

Nginx durumuna hayret edin

Nginx hizmet durumunu kontrol etmek için aşağıdaki komutu kullanın:

Sudo systemctl durumu nginx

Sembol şuna benzer:

* Nginx.service - nginx - yüksek performanslı web sunucusu Yüklendi: yüklendi (/lib/systemd/system/nginx.service; etkin; satıcı ön ayarı: etkin) Açılan Yer: /etc/systemd/system/nginx.service.d ` -nofile.conf Aktif: 2019-04-22 Pazartesi 10:21:22 MSK'dan beri aktif (çalışıyor); 10 saat önce Dokümanlar: http://nginx.org/en/docs/ Süreç: 1113 ExecStart = /usr/sbin/nginx -c /etc/nginx/nginx.conf (kod = çıkıldı, durum = 0 / BAŞARI) Ana PID : 1183 (nginx) Görevler: 4 Bellek: 63,1 milyon CPU: 3 dk 31,529 sn CGrup: /system.slice/nginx.service | -1183 nginx: ana süreç /usr/sbin/nginx -c /etc/nginx/nginx.con | -1184 nginx: alt süreç | -1185 nginx: çalışan süreç ' -1186 nginx: çalışan süreç

Nginx sürümünü değiştirin

Bazen sorunu gidermek veya şarkı işlevinin mevcut olup olmadığını belirlemek için Nginx'inizin sürümünü bilmeniz gerekebilir.

Nginx sürümünüzü aşağıdakileri çalıştırarak kontrol edebilirsiniz:

Sudo nginx -v nginx sürümü: nginx/1.14.0 (Ubuntu)

Seçenek -V, olası yapılandırmaya bağlı olarak Nginx sürümünü bir kerede gösterecektir.

Sudo nginx -V

Visnovok

Bu yazıda size en önemli Nginx komutlarının eylemlerini gösterdik. Nginx komut satırı hakkında daha fazla bilgi edinmek istiyorsanız Nginx belgelerine bakın.

Nginx popüler ve üretken bir web sunucusu ve ağ geçidi proxy sunucusudur.

Nginx'in birçok avantajı vardır, özelleştirilmesi sayesinde kullanımı kolaydır ve yeni başlayanlar için kaybolmaz. Bu kılavuz, Nginx'in temel parametrelerini, sözdizimini ve dosyalarını anlamanıza yardımcı olacaktır.

Not: Kerivnitstvo Ubuntu 12.04'te kuruludur.

Nginx dizin hiyerarşisi

Nginx, yapılandırma dosyalarını /etc/nginx dizininde saklar.

Bu dizin birkaç dizin ve modüler yapılandırma dosyası daha içerir.

cd /etc/nginx
ls -F

conf.d/koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params siteler etkin /

Apache kullanıcıları, sitelerde kullanılabilen ve sitelerde etkin olan dizinlere zaten aşinadır. Bu dizinler sitelerin yapılandırmasını gösterir. Dosyalar mevcut sitelerde oluşturulur ve kaydedilir; etkin sitelerde yalnızca etkin sitelerin yapılandırmaları kaydedilir. Bu amaçla, mevcut sitelerden etkin sitelere doğru sembolik bir değişiklik yapılması gerekmektedir.

Conf.d dizini ayrıca yapılandırmaları kaydetmek için değiştirilebilir. Nginx başlatıldığında .conf uzantılı bir dosya okunacaktır. Bu tür dosyaların sözdizimi suçlu değildir.

Aşağıda, belirli işlemlerin ve ek bileşenlerin yapılandırması hakkında bilgi içeren, / etc / nginx'e kaydedilen tüm dosyalar bulunmaktadır.

Ana Nginx yapılandırma dosyası nginx.conf'tur.

nginx.conf dosyası

Nginx.conf dosyası çeşitli yapılandırma dosyalarını okur ve sunucu başlatıldığında bunları tek bir yapılandırma dosyasında birleştirir.

Dosyayı aç:

sudo nano /etc/nginx/nginx.conf

kullanıcı www-verileri;
işçi_işlemleri 4;
pid /var/run/nginx.pid;
olaylar (
işçi_bağlantıları 768;
#Multi_accept açık;
}
http(
. . .

İlk satırlar Nginx hakkında gizli bilgiler sağlar. Kullanıcı www-data satırı sunucuyu belirtir ve sunucu bundan sonra başlatılır.

pid yönergesi, dahili wiki'ler için süreç PID'lerinin nereye kaydedileceğini belirtir. Worker_processes satırı, Nginx tarafından aynı anda desteklenebilecek işlem sayısını gösterir.

Ayrıca dosyanın bu bölümünde günlükleri girebilirsiniz (örneğin, hata günlüğü error_log yönergesi kullanılarak yazılır).

Sunucu hakkında gizli bilgiler için etkinlikler bölümünü takip edin. Nginx yapılandırmasını yönetir. Ardından http bloğu gelir. Web sunucusu yapılandırmalarına aşina olmaya devam etmeden önce Nginx yapılandırma dosyasının nasıl biçimlendirileceğini anlamalısınız.

Nginx yapılandırma dosyasının yapısı

Nginx yapılandırma dosyası bloklara bölünmüştür.

İlk blok olaylardır, ardından http gelir ve konfigürasyonların ana hiyerarşisi başlar.

Http bloğunun yapılandırma ayrıntıları, çıkarıldıkları bloğun gücünü azaltacak şekilde eşit olarak kapalı bloklara bölünür. Http bloğu, sunucu bloklarına bölünmüş temel Nginx yapılandırmalarının büyük bir bölümünü depolar ve bunlar da konum bloklarına bölünmüştür.

Nginx'i kurarken şu kuralı hatırlamak önemlidir: konfigürasyon seviyesi ne kadar yüksekse, bu konfigürasyonda o kadar fazla blok vardır; Yapılandırma ne kadar düşük olursa, o kadar bireysel olur. X parametresinin sunucu bloğunda sıkışıp kalma ihtimali varsa, böyle bir parametrenin http bloğuna yerleştirilmesi gerekir.

Dosyaya iyice baktığınızda, programların bir bütün olarak nasıl davranacağını kontrol etmek için birçok seçeneğin mevcut olduğunu fark edeceksiniz.

Örneğin, dosya sıkıştırmayı çözmek için aşağıdaki parametreleri ayarlamanız gerekir:

gzip'i açın;
gzip_disable "msie6";

İstemciye gönderilen verileri kısıtlamak için gzip desteğini etkinleştirmeli ve gzip'i etkinleştirmelisiniz. İnternet Explorer 6 (bu tarayıcı veri sıkıştırmayı desteklemiyor).

Anne için bazı parametrelerin suçlanması mümkün mü? Farklı değerler birden fazla sunucu bloğunda bu parametre ayarlanabilir büyük eşit, Ve sonra sunucunun ortasındaki blokları yeniden değerlendirin. Sonuç olarak Nginx, alt seviye parametresini kaldırır.

Aynı düzeydeki bu yapılandırma, birden fazla aynı dosyanın saklanması ihtiyacını ortadan kaldırır. Ayrıca parametreleri seçmeyi unutursanız alt düzey, Nginx yalnızca ayarları yapılandırır.

Nginx.conf dosyasındaki http bloğu şu şekilde biter:

/etc/nginx/conf.d/*.conf'u dahil edin;
/etc/nginx/sites-enabled/*'ı dahil edin;

Bu, belirli sitelerin ayarlarını ve URL'yi gösteren sunucu ve konum bloklarının bu dosyaya kaydedileceği anlamına gelir.

Bu, yeni sitelere hizmet vermek için yeni dosyalar oluşturabileceğiniz modüler bir yapılandırma mimarisini desteklemenize olanak tanır. Ayrıca benzer dosyaları gruplandırmanıza da olanak tanır.

Nginx.conf dosyasını kapatın. Şimdi diğer sitelerin ayarlarını yapmanız gerekiyor.

Nginx sanal blokları

Nginx'teki sunucu blokları Apache sanal ana bilgisayarlarına (açıklık sağlamak için sanal ana bilgisayarlar olarak da adlandırılır) benzer. Temel olarak sunucu blokları teknik özellikler birden fazla web sitesinin tek bir sunucuda barındırılması.

Mevcut siteler kataloğunda, sunucuyla birlikte verilen sunucu bloğunun dosyasını bulabilirsiniz. Bu dosya sitenin bakımı için gerekli tüm verileri içerir.

cd siteleri mevcut
sudo nano varsayılan

root/usr/share/nginx/www;
indeks indeksi.html indeks.htm;
sunucu_adı yerel ana bilgisayar;
konum/(

}
konum/belge/(

takma ad/usr/paylaşım/belge/;
otomatik indeks açık;
127.0.0.1'e izin ver;
Hepsini inkar etmek;

Dosya çok iyi yorumlar içeriyor, ancak ekte açıklamalar basitlik ve okunabilirlik açısından çıkarılmıştır.

Sunucu bloğu, kıvrımlı kolların arasına yerleştirilen tüm ayarlamaları içerir:

sunucu(
. . .
}

Nginx.conf dosyasındaki bu yerleşim bloğu, ek include yönergesiyle http bloğunun sonuna yakındır.

Root yönergesi site içeriğinin saklanacağı dizini belirtir. Bu katalogda Nginx gerekli dosyaları arayacaktır. Kurulum için bu dizin /usr/share/nginx/www'dir.

Saygıyı yeniden sağlayın: tüm satırlar noktalı çizgiyle bitecektir. Nginx bu şekilde bir yönergeyi diğerine göre güçlendirir. Aslına bakılırsa, Nginx iki yönergeyi (veya birkaç yönergeyi) ek argümanlarla birlikte tek bir yönerge olarak okuyacaktır.

İndeks yönergesi, indekste listelenecek dosyaları belirler. Web sunucusu dosyaları geri yüklenme sırasına göre kontrol edecektir. Eğer aynı taraf istenmemişse sunucu bloğu index.html dosyasını bulup döndürecektir. Dosyanın tamamını bulamazsa index.htm'yi işlemeye çalışacaktır.

sunucu_adı yönergesi

Server_name yönergesi bu sunucu bloğu tarafından sunulacak alan adlarının bir listesini içerir. Alan adı sayısı paylaşılmaz; İzleme listesindeki alanlar boşluklarla ayrılır.

Alan adının başındaki veya sonundaki yıldız sembolü (*), maskeli bir adı belirtir; burada yıldız, adın bölümlerini (veya birkaç bölümünü) temsil eder. Örneğin, *.example.com adları forum.example.com ve www.animals.example.com adlarına benzer olacaktır.

URL'nin sorgulanması birçok sunucu_adı yönergesine karşılık geldiğinden, bu öncelikle aynıdır ve bu tamamen önlenir.

Adreslerde herhangi bir kaçış görünmüyorsa, bulunan isimleri yıldızla bitecek bir maskeyle aramanız gerekecektir. Böyle bir adı bilmiyorsanız muhtemelen normal ifadelerden kaçınırsınız.

Normal dillerdeki sunucu adları yaklaşık işaretiyle (~) başlar. Ne yazık ki bu konu bu makalenin kapsamı dışındadır.

konum blokları

Konum/satır, kollardaki yönergelerin diğer konum bloklarıyla tutarlı olmayan tüm kaynaklara yapıştırılacağını belirtir.

Bu tür bloklar uri yollarını yerleştirebilir (örneğin /doc/). Konum ile uri arasındaki kimliği yeniden oluşturmak için = sembolünü kullanın. ~ sembolü düzenli ifadelerle ilişki kurar.

Yaklaşık işareti, büyük/küçük harfe duyarlı modu etkinleştirir ve yıldız içeren yaklaşık işareti, büyük/küçük harfe duyarlı olmayan modu etkinleştirir.

İstek konum bloğuyla eşleşirse sunucu aramayı reddeder ve bloğu vikoristalar. Sunucu tam konum bloğunu bilmiyorsa, URI'yi konum yönergelerinin parametreleriyle eşleştirir. Nginx, ^ ~ sembollerinin birleştirildiği ve URI'den çıkarılan bir blok seçer.

^ ~ seçeneği seçilmediğinden, Nginx en yakın seçeneği seçer ve mevcut şablonlardan birini seçmeye çalışmak için normal virüsleri aramayı bırakır. Eğer böyle bir Wislow tanıyorsanız, o zaman bir Vikorist yogo bulacaksınız. Böyle bir virüs olmadığından vikorist sunucusu URI kaçmadan önce bulunur.

Bu durumda Nginx'in tamamen aynı olacağını unutmayın. Bu tür benzerlikler olmadığından normal bir virüs arama yapar ve ardından URI'ye göre arama yapar. Arama önceliğini URI'ye göre değiştirmek için ^ ~ karakter kombinasyonunu seçin.

try_files yönergesi

Try_files yönergesi, dosyaların belirli bir sırayla varlığını kontrol eden ve isteğin işlenmesi için bulunan ilk dosyayı seçen kullanışlı bir araçtır.

Bu yardım almanızı sağlar ek parametreler Nginx'e nasıl hizmet verildiği anlamına gelir.

Yapılandırma dosyasında aşağıdaki satır bulunur:

try_files $uri $uri //index.html;

Bu, konum bloğu tarafından sunulması istendiğinde Nginx'in uri'yi hemen bir dosya olarak sunmaya çalışacağı anlamına gelir (bu davranış $uri değişikliği tarafından ayarlanır).

Sunucu $uri'nin değerini algılamazsa, uri'yi bir dizin olarak eşleştirmeye çalışacaktır.

Sondaki eğik çizgiyi takiben sunucu dizinin içeriğini kontrol eder, örneğin $uri/.

Bir dosya veya dizin bulunamazsa, Nginx dosyayı kurallara göre oluşturur (bu durumda sunucu bloğunun kök dizinindeki index.html). Try_files yönergesi, sistemde bulunmaktan sorumlu olan dosya olan geri dönüş seçeneği olarak kalan parametreyi kullanır.

Web sunucusu önceki parametrelerde herhangi bir hata tespit etmezse düzeltme tarafını çevirebilirsiniz. Bunun için işaret birdir ve af kodu kullanılır.

Örneğin konum/blok kaynak isteği bulamazsa index.html dosyası yerine 404 uyarısını çevirebilirsiniz:

try_files $uri $uri / = 404;

Bunu yapmak için, kalan parametre kutusuna (= 404) bir güven işareti koymanız ve ödeme kodunu ayarlamanız gerekir.

Ek parametreler

Takma ad yönergesi, Nginx'in sayfaları verilen dizinin konum bloğuna (örneğin kök konumu) sunmasına olanak tanır.

Örneğin, /doc/ dosyasına yüklenen dosyalar /usr/share/doc/ dosyasından sunulacaktır.

Autoindex on yönergesi, belirli bir konum yönergesi için Nginx dizin listesini etkinleştirmenizi sağlar.

İzin ver ve reddet satırları dizinlere erişimi kontrol eder.

Visnovok

Nginx web sunucusu zengin işlevselliğe ve üretkenliğe sahiptir ancak terminolojisi ve parametreleri kafa karıştırıcı olabilir.

Nginx yapılandırmalarını anlayıp onlarla çalışmaya başladığınızda, bu sert ve hafif aracın tüm avantajlarından vazgeçeceksiniz.

Etiketler:,

Nginx web sunucusu, çok yüksek üretkenliğe ve istemcilere yönelik statik isteklerin hızlı işlenmesine sahip en popüler web sunucularından biridir. Doğru yapılandırmayla web sunucunuzdan daha da yüksek verimlilik elde edebilirsiniz. Nginx statik dosyaları çok iyi işleyebilir HTML sayfaları veya diğer kaynak türleri.

Önceki makalelerden birinde, bazı temel parametreleri ayarlamaya zaten bakmıştık; bu makalede, web sunucusunun askeri zihinlerde yükselmeden önce üretkenliğine ve hazırlanmasına daha fazla odaklanmak istiyorum. Bu yaygara nedir? Linux dağıtımı, O zaman bugün CentOS'a bakacağız, bu sistem sıklıkla sunucularda test ediliyor ve Nginx kurulumuyla burada bazı tutarsızlıklar ortaya çıkabiliyor. Daha sonra Nginx CentOS kurulumuna bakacağız, http2 desteğinin, Google sayfa hızının nasıl yeniden etkinleştirileceği ve ana yapılandırma dosyasının nasıl ayarlanacağı hakkında konuşalım.

CentOS, Nginx ve Win'in resmi depolarında, sisteminizde önceden kurulu olan her şeyi görebilirsiniz. Ayrıca sitenin, tüm verilerin tek bir bağlantıya aktarılmasına olanak tanıyan ve daha fazla üretkenlik sağlayan http2 protokolünü kullanarak çalışmasını da istiyoruz. Http2 üzerinden çalışmak için bir SSL sertifikası ayarlamanız gerekecektir, ancak bu zaten Lets Encrypt Nginx sertifikasının istatistiklerinde yazılmıştır. Hepsi bu değil. Orijinal SSL'den HTTP2.0'a geçiş için çoğu tarayıcı şu anda ALPN protokolünü kullanıyor ve OpenSSL 1.02'den itibaren destekleniyor. Bunun nedeni depolarda yalnızca OpenSSL 1.01'in bulunmasıdır. Bu nedenle Nginx'in OpenSSL 1.02'den derlenen sürümünü kurmamız gerekiyor. Bunun için Broken Repo'yu kullanabilirsiniz:

sudo yum -y yum-utils'i yükle
# Sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

EPEL deposunu kullanıyorsanız Nginx kardeşinin gerekli olmadığını belirtmeniz gerekecektir:

sudo yum-config-manager --save --setopt = epel.exclude = nginx *;

Şimdi Nginx'in doğru sürümünü yüklemek için şunu yazın:

sudo yum nginx'i yükle

Nginx 1.13.2'nin geri kalan sürümü, ALPN desteğinin devam etmesiyle kurulacak. Şimdi ayarlamalara geçelim.

2. Nginx'i kurma

Öncelikle konfigürasyon dosyasının yapısına bir göz atalım. İlk bakışta hepimizin kafası karışabilir ama orada her şey mantıklı olurdu:

küresel seçenekler
olaylar()
http(
sunucu(
konum()
}
sunucu()
}

Öncelikle programın temel parametrelerini (örneğin, ne tür bir bilgisayarın başlatılacağı ve işlem sayısı) ayarlayan genel seçeneklere gidin. Sonraki bölüm olaylar Bu, Nginx'in giriş bağlantılarına nasıl yanıt vereceğini açıklar, ardından bir bölüm vardır. http, Her şey bu şekilde tamamen http protokolüne göre yapılandırılır. Onun bir bölümü var sunucu, Bu bölüm aynı etki alanını temsil etmektedir, sunucu bölümünde bir bölüm bulunmaktadır. konum, Herkes URL'nin kendisinin sorulduğunu bilir; Apache'de olduğu gibi sunucudaki dosya değil, sorulan URL'nin kendisi olduğunu unutmamak önemlidir.

Ana genel ayarlar /etc/nginx/nginx.conf dosyasında yapılacaktır. Daha sonra neyi değiştireceğimize ve hangi değerlerin ayarlanması gerektiğine bir göz atacağız. Küresel seçenekler hakkında konuşalım:

  • kullanıcı- sunucu, hangi sunucunun başlatıldığına bağlı olarak, site dosyalarının bulunduğu dizinin sahibi olmalı ve php-fpm'nin çalıştırılması gereken adda olmalıdır;
  • işçi_işlemleri- Başlatılacak Nginx işlemlerinin sayısının, sahip olduğunuz çekirdek sayısına eşit olarak kurulması gerekecektir, örneğin bende 4 tane var;
  • işçi_cpu_affinity- bu parametre, dış görünüm işlemini belirli bir işlemci çekirdeğine eklemenize, değeri otomatik olarak ayarlamanıza olanak tanır, böylece programın kendisi neyi ve nasıl ekleneceğini seçer;
  • işçi_rlimit_nofile- program tarafından açılabilen maksimum dosya sayısı, her bağlantı en az iki dosya gerektirir ve her işlem sizin tarafınızdan bağlantı sayısı tarafından belirtilecektir, dolayısıyla formül aşağıdaki gibidir: işçi_işlemleri * işçi_bağlantıları * 2, parametre işçi_bağlantıları küçük parçaları ayıralım;
  • pcre_jit- ek JIT derlemesi kullanarak normal ifadelerin işlenmesini hızlandırmak için bu parametreyi etkinleştirin;

Etkinlikler bölümünde iki parametreyi yapılandırabilirsiniz:

  • işçi_bağlantıları- bir işlem için bağlantı sayısı, giriş bağlantılarının işlenmesi için yeterli olabilir. Öncelikle IP_server adresi / nginx_status arkasındaki istatistiklerin görülebildiği bu giriş bağlantılarından kaç tanesinin alındığını bilmemiz gerekiyor. Nasıl açılır, aşağıya bir göz atalım. Aktif Bağlantılar satırında sunucuyla çok sayıda aktif bağlantı bulunur ve ayrıca php-fpm ile olan bağlantılara da uyulduğundan emin olmanız gerekir. Daha sonra, kabul edilen ve işlenen alanlara tıklayın, önce tamamlanan bağlantıları, ardından kabul edilenlerin sayısını görüntüleyin. Suçluluğun anlamı aynı kalır. Eğer ayrılırlarsa bu, bağlantının gerçekleşmediği anlamına gelir. Popoya hayret edin, ilk resim sorun, diğeri düzen. Optimum konfigürasyonum için rakam 200 bağlantı olabilir (4 işleme dayalı olarak toplam 800):

  • çoklu_kabul- programın aynı anda çok sayıda bağlantıyı kabul etmesine olanak tanır, bu da yüksek sayıda bağlantıyla işi hızlandırır;
  • Accept_mutex- tüm süreçlerin yeni sorunlarla ilgili anında bildirim alması için bu parametrenin değerini kapalı olarak ayarlayın;

Ayrıca olaylar bölümünde use epoll yönergesinin kullanılması tavsiye edilir, çünkü bu etkili yöntem Linux için giriş bağlantıları işleniyor ancak bu yöntem hala perde arkasında olduğundan manuel olarak eklemek istemiyorum. http bölümünden birkaç parametreye daha göz atalım:

  • dosya Gönder- veri gönderme dosyasını gönderme yöntemini değiştirin. Linux için en etkili yöntem.
  • tcp_nodelay, tcp_nopush- başlıkları ve gövdeyi tek bir pakette gönderir, üçlü olarak çalışır;
  • hayatta kalma zaman aşımı- istemci bağlantısı desteği zaman aşımı, eğer çok fazla komut dosyanız yoksa, 10 saniye sürecektir; istemcinin sunucuya bağlanmasının ne kadar süreceği değerini ayarlayabilirsiniz;
  • reset_timedout_connection- bir zaman aşımından sonra bağlantıyı açın.
  • open_file_cache- hakkında önbellek bilgileri kapalı dosyalarda. Örneğin, open_file_cache max = 200000 etkin değil = 120s; max - önbellekteki maksimum dosya sayısı, önbellek saati.
  • open_file_cache_valid- dosyaların alaka düzeyini kontrol etmeniz gerekiyorsa. Örneğin: open_file_cache_valid 120s;
  • open_file_cache_min_uses- yalnızca belirli sayıda açılmış dosyaları önbelleğe alın;
  • open_file_cache_errors- dosya değişikliklerini hatırlayın.
  • if_modified_since- If-modified-since başlıklarının nasıl işleneceğini ayarlayacağım. Bu başlığın ardından, sayfa son görüntülediğinizden bu yana değişmediyse tarayıcı 304 yanıtı görüntüleyebilir. Olası seçenekler - gönderme - gönderme, saat tam olarak çalışırken gönder - tam, saat tam olarak çalışırken gönder veya daha önce - önce;

Nginx conf kurulumu şu şekilde görünecektir:

Kullanıcı nginx;
işçi_işlemleri 4;
işçi_cpu_affinity otomatik;
işçi_rlimit_nodosyası 10000;
pcre_jit açık;
error_log /var/log/nginx/error.log uyar;
load_module "modules/ngx_pagespeed.so";
olaylar (
multi_accept açık;
Accept_mutex kapalı;
işçi_bağlantıları 1024;
}
http(
dosya gönder;
tcp_nopush açık;
tcp_nodelay açık;
open_file_cache max = 200000 aktif değil = 20s;
open_file_cache_valid 120s;
open_file_cache_errors açık;
reset_timedout_connection açık;
client_body_timeout 10;
keepalive_timeout 65;
/etc/nginx/sites-enabled.*.conf'u dahil edin
}

3. http2'yi kurma

Sunucu bölümünün kurulumunu detaylı olarak anlatmayacağım çünkü makalede zaten Ubuntu'da Nginx kurulumu yaptım ve buraya eklenecek pek bir şey yok, SSL kurulumu büyük bir konu ve bu yazıda da ele alınacak. Http2'yi kurmak için SSL'ye de ihtiyacınız var. Daha sonra dinleme yönergesini sunucu bölümünüze iletmeniz yeterlidir:

dinle 194.67.215.125:443 default_server;

dinle 194.67.215.125:443 http2 default_server;

bunun gibi eksen basit bir şekilde Cym'den önce doğru Nginx sürümü kuruluysa http2'yi etkinleştirebilirsiniz.

4. Sayfa Hızını Ayarlayın

Google Pagespeed, sayfaların daha hızlı görüntülenmesini, web sunucusunun daha verimli çalışmasını ve kullanıcıların rahatsızlık yaşamamasını sağlamak için çeşitli optimizasyonlar içeren bir Nginx modülüdür. Buna önbelleğe alma, html kodunun optimizasyonu, görsellerin optimizasyonu, javascript entegrasyonu ve css kodu ve daha fazlası. Her şey, PHP'de çalışıyor olmanızdan daha etkili olan Nginx ile aynı düzeydedir. Ancak burada bir eksiklik var, modülde Son Değiştirilme başlığı gösteriliyor.

Sağ tarafta, PageSpeed ​​tüm dosyalar için uzun bir önbellek satırı kurar ve dosya adına bir karma ekler. Dolayısıyla, tarayıcı yalnızca yeni hash'e sahip dosyaları getireceğinden kaynak tüketiminin hızı çok daha yüksek olacaktır ve kullanıcıların değiştirilecek herhangi bir dosyada değişiklik yapabilmesi için LastModified kaldırılacaktır. Şimdi modülün nasıl kurulacağına bakalım. Çıkış kodlarından bazılarını toplamamız gerekecek.

Montaj aletlerini hemen kurmanız önemlidir, eğer kurmazsanız, onları kaldıracaksınız ve nasıl çalışacağınızı bilemeyeceksiniz:

yum yükle wget gcc cmake sıkıştırmayı aç gcc-c++ pcre-devel zlib-devel

Sürümünüz için Nginx çıktısını indirin ve açın, örneğin 1.13.3:

wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
# Tar -xzvf nginx-1.13.3.tar.gz

Nginx sunucusunun kurulumu, programların benzer bileşenlerle yeniden birleştirilmesini ve değiştirilmesini içermez, yalnızca vikoryst ve modülün montajı için çıktılar içerir. Hafta Sonu PageSpeed'i indirin ve paketini açın:

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# v1.12.34.2-stable.zip dosyasını açın

PageSpeed ​​optimizasyon kitaplığını modülün çıkış kodlarının bulunduğu klasöre indirin ve paketinden çıkarın:

cd ngx_pagespeed-1.12.34.2-kararlı /
# Wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
# Tar -xvzf 1.12.34.2-x64.tar.gz

OpenSSL 1.02'yi indirin ve açın:

wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
# Tar xvpzf openssl-1.0.2k.tar.gz

Şimdi modülü almamız gerekiyor. Nginx iş parçacıklarında mevcut olan en belirgin seçenekler şunlardır:

Ve şimdi Nginx ile klasöre gidiyoruz, tüm seçenekleri, PageSpeed, OpenSSL için --add-dynamic-module seçeneğini seçip indirmeyi deneyelim:

cd nginx-1.13.3
# ./Configure --prefix = /etc/nginx --sbin-path = /usr/sbin/nginx --modules-path = /usr/lib64/nginx/modules --conf-path = /etc/nginx/nginx .conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx .pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache /nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path= /var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_modu le --with-http_sub_module --wit h-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt = " - O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fistisnalar -fstack-protector-strong --param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 -mtune = genel "--with -ld-opt=--with -openssl=$HOME/openssl-1.0.2k --add-dynamic-module=$HOME/ngx_pagespeed-1.12.34.2-stable$(PS_NGX_EXTRA_FLAGS)
# yapmak

Her şey doğru şekilde bölünmüşse, çıktı, /etc/nginx/modules klasörüne kopyalamanız gereken obj klasöründeki ngx_pagespeed.so modülüdür:

cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

Önbellek için bir klasör oluşturalım:

mkdir -p /var/ngx_pagespeed_cache
# Chown -R nginx: nginx /var/ngx_pagespeed_cache

Şimdi modülü /etc/nginx/nginx.conf dosyasında etkinleştirmek için aşağıdaki satırı ekleyin:

load_module "modules/ngx_pagespeed.so";

Nginx tabanlı bir Web sunucusu, Web sitelerinin verimliliğini artırmanın mükemmel bir yoludur. Statik içeriği işleme hızının eşi benzeri yoktur: Gece boyunca binlerce bağlantıyı kolayca yakalar ve herhangi bir konfigürasyona uyacak şekilde kolayca optimize edilebilir ve ayarlanabilir. Fakat? Apache için bir ön uç görevi gören nginx, tüm Web altyapısının en savunmasız kısmıdır, bu nedenle nginx güvenliğine özel önem verilmelidir.

Bu makale bir tür özettir veya isterseniz tüm nginx güvenlik teknolojilerinin bir özetidir. Bir teoriye, bir Web sunucusu kurmanın temellerine ilişkin bir açıklamaya veya başka bir şeye sahip olmayacak. Bunun yerine, Web sunucusu hırsızlıklarını düzgün bir şekilde durdurmak için izlemeniz gereken tüm temel adımları açıklayan pratik materyaller bulacaksınız.

kurulum

Nginx paketi herhangi bir dağıtım için önceden derlenmiş görünümlerde mevcuttur. Ancak, kendi başınıza bir sunucu oluşturarak daha kompakt ve güvenilir bir sunucu oluşturabilirsiniz ve ayrıca kalıcı komut dosyası taşıyıcılarını ortadan kaldırmak için Web sunucusunun sırasını değiştirme olanağına da sahip olursunuz.

Web sunucusu gizlilik sırasını değiştirme

Nginx çıktısını src / http / ngx_http_header_filter_module.c dosyasından indirin ve sonraki iki satırı bulun:

static char ngx_http_server_string = "Sunucu: nginx" CRLF;
static char ngx_http_server_full_string = "Sunucu:" NGINX_VER CRLF;

Bunları şu sembolle değiştirin:

static char ngx_http_server_string = "Sunucu:] [Web Sunucusu" CRLF;
static char ngx_http_server_full_string = "Sunucu:] [Web Sunucusu" CRLF;

Kullanmadığınız tüm nginx modüllerini gördük.

Derlemeden hemen önce birkaç nginx modülü Web sunucusuna bağlanır ve bunların herhangi biri potansiyel güvensizlikle doludur. Belki gelecekte bunlardan birinde bir güvenlik açığı keşfedilecek ve sunucunuz tehdit altında olacaktır. Gereksiz modülleri etkinleştirerek böyle bir durumun riskini önemli ölçüde azaltabilirsiniz.

Vikonai ek saldırı komutları için toplanıyor:

# ./Configure --http_autoindex_module olmadan --http_ssi_module olmadan
# yapmak
# Kurulumu yap

Bu şekilde, nginx'i dahil edilen (ve çoğu durumda markalı) SSI (Sunucu Tarafı İçeriği) ve Autoindex modüllerinin arkasından kaldırırsınız. Hangi modüllerin Web sunucusundan güvenli bir şekilde kaldırılabileceğini öğrenmek için, yapılandırma komut dosyasını '-help' bayrağıyla çalıştırın.

nginx.conf hazırlanıyor

Nginx'i yükledikten sonra izlemeyi yapılandırın. Derginin kenarlarında zaten bu süreci anlatan materyaller olacak ama biz bu istatistiklerle bitirip sunucu güvenliğini iyileştirmenin yollarından bahsedeceğiz.

Sunucu sürümünün tüm sosyal medya sayfalarında görüntülenmesini etkinleştir

Nginx.conf dosyasına "server_tokens off" satırını ekleyin. İstemcinin isteğine yanıt olarak oluşturulan sayfalardaki Web sunucusunun türü ve sürümü hakkında bilgi almak için nginx'i kullanabilirsiniz.

Yığın görünümünden ruh hali koruması

Sunucu bölümüne aşağıdaki satırları ekleyin:

# Vi /etc/nginx/nginx.conf

# İstemci gücünden tasarruf etmek için maksimum arabellek boyutu
client_body_buffer_size 1K;
# İstemci veri başlıklarını kaydetmek için maksimum arabellek boyutu
client_header_buffer_size 1k;
# İstemci tarafından belirlenen maksimum gövde boyutu, başlığın Content-Length alanında belirtilir. Sunucu, dosyalara tecavüzün sürdürülmesinden sorumlu olduğundan bu değerin arttırılması gerekir.
client_max_body_size 1k;
# İstemci isteğinin büyük başlığını okumak için arabelleklerin miktarı ve boyutu
Large_client_header_buffers 2 1k;

Large_client_header_buffers direktifine dikkat edin. URI satırını kaydetmek için nginx, arabellek boyutunun bellek tarafının boyutuna eşit olduğunu görür (x86 - 4 KB için). İşlemenin tamamlanmasının ardından bağlantı canlı tutma durumuna geçtiğinde arabellekler sıfırlanır. İki adet 1 KB arabellek, URI'leri yalnızca 2 KB'ye kadar kaydedebilir; bu da botlarla ve DoS saldırılarıyla mücadeleye yardımcı olur.

Üretkenliği artırmak için aşağıdaki satırları ekleyin:

# Vi /etc/nginx/nginx.conf

# İstemcinin gövdesini okurken zaman aşımı
client_body_timeout 10;
# İstemci istek başlığını okurken zaman aşımı
client_header_timeout 10;
# Zaman aşımı, istemci ile herhangi bir canlı tutma bağlantısı sonunda sunucu tarafında kapatılmayacaktır
keepalive_timeout 5 5,
# Sinyalin istemciye iletilmesi sırasında zaman aşımı
send_timeout 10;

Bir saatlik bağlantı sayısını kontrol edin

Web sunucusunu yeniden barındırmaya karşı korumak ve DoS saldırısı oluşturmaya çalışmak için yapılandırmaya aşağıdaki satırları ekleyin:

# Vi /etc/nginx/nginx.conf

# Oturumların kaydedileceği bölgeyi (sınırları) tanımlıyoruz. Boyutu 1 MB olan bir bölge yaklaşık 32.000 birim tasarruf edebilir ve boyutu 5 MB olarak ayarlanabilir.
limit_zone $binary_remote_addr 5m'yi daraltır;
# Bir oturum için maksimum bir saatlik bağlantı sayısını ayarlar. Temel olarak bu sayı, IP başına maksimum bağlantı sayısını belirler.
limit_conn slimits 5;

İlk direktif HTTP bölümünde, diğeri ise konum bölümünde bulunur. Bağlantı sayısının limitleri aşması durumunda istemciye 503 kodlu “Hizmet kullanılamıyor” bildirimi gönderilir.

Alanınıza yalnızca kişilerin bağlanmasına izin verin

Saldırganlar, sızdırılan Web sunucularını taramak ve aramak için botları kullanabilir. Botların, açık olan 80 bağlantı noktasını arayarak IP adresi aralıklarını taramasını ve web sunucusu (veya ana uç) hakkında bilgi almak için HEAD komutunu kullanmasını sağlayın. Sunucuya indirmeyi IP adresine göre engelleyerek (konum alt bölümüne ekleyin) böyle bir taramayı kolayca unutabilirsiniz:

# Vi /etc/nginx/nginx.conf

if ($ana bilgisayar!~^(ana bilgisayar.com | www.ana bilgisayar.com)$) (
444'ü döndür;
}

Mevcut dağıtım yöntemlerinin sayısını Web sunucusuna bağlayın

Bu botlar, her türü ve/veya penetrasyonu denemek üzere sunucuya ulaşmak için çeşitli yöntemler kullanır, ancak RFC 2616, Web sunucusunun bunların hepsini uygulaması gerekmediğini ve yöntemlerin desteklenmeyebileceğini açıkça belirtir. pes etmek. Günümüzde sadece GET (belge isteme), HEAD (sunucu başlıklarını isteme) ve POST (belge yayınlamayı isteme) yöntemleri kullanımdan kaldırılmıştır, dolayısıyla aşağıda belirtilen satırın sunucuya eklenmesiyle diğerlerinin tümü kolayca dahil edilebilmektedir. bölüm.figürasyon dosyası:

# Vi /etc/nginx/nginx.conf

if ($request_method! ~ ^ (GET | HEAD | POST) $) (
444'ü döndür;
}

botlar güncelleniyor

Belirli bir istemci türü (kullanıcı aracısı) için botları, tarayıcıları ve diğer kötü amaçlı nesneleri engellemenin başka bir yöntemi. Çoğu bot tüm yasal tarayıcıları kapattığı ve bazı durumlarda kahverengiye döndüğü için pek etkili değildir:

# Vi /etc/nginx/nginx.conf

# Engellenen yöneticiler cezbediliyor
if ($http_user_agent ~ * LWP::Simple | BBBike | wget) (
403'ü döndür;
}
# Eylemler ve bot türleri engellendi
if ($http_user_agent ~ * msnbot | scrapbot) (
403'ü döndür;
}

Yönlendiren spam'ını engelle

Siteniz Web günlüklerini gizli bir görünümde yayınlıyorsa, kolayca Yönlendiren spam'inin kurbanı olabilirsiniz (eğer sunucunuza spam botlar gönderilirse, yönlendiren başlığında reklamı yapılan sitenin adresleri de dahil). Bu tür spam, bir İnternet sitesinin SEO derecelendirmelerini kolayca yükseltebilir, dolayısıyla doğal olarak engellenmesi gerekir. Bunu yapmanın bir yolu reklam sitelerinin adreslerinde görünen kelimelerin çoğunu kara listeye eklemektir.

# Vi /etc/nginx/nginx.conf

# Sunucu bölümü
if ($ http_referer ~ * (bebekler | satılık | kız | mücevher | aşk | çıplaklar | organik | poker | porno | seks | genç))
{
403'ü döndür;
}

hotlink'i engelle

Hotlink - başka bir siteden bir görselin (diğer içerik) yan tarafa eklenmesi. Özünde bu bir suçtur, çünkü bir yıldan fazla boş zamanınızı boşa harcayan görüntüler, yalnızca başkalarına kolayca galip gelmekle kalmaz, aynı zamanda başka bir dolandırıcıya işaret etmeden Web sunucunuza bir saldırı oluşturur. Bu arzuyla mücadele etmek için, görsellerin yalnızca müşteriye talep edildiğinde, zaten sitedeyken verilmesini sağlayacak şekilde çalışmanız gerekir (başka bir deyişle, yönlendiren sorgusunun başlığı, karşı misilleme yapmaktan sorumludur). sitenizin adı). Nginx.conf yapılandırma dosyasının sunucu bölümüne aşağıdaki satırları ekleyin (host.com web sitenizin adresidir):

# Vi /etc/nginx/nginx.conf

konum/resimler/(
valid_referers hiçbiri www.host.com host.com'u engellemedi;
if ($invalid_referer) (
403'ü döndür;
}
}

Alternatif olarak, sunucuyu, istenen görselin yerine hırsızlıkla ilgili bilgiler içeren özel bir banner gönderecek şekilde yapılandırabilirsiniz. Bunu yapmak için "dönüş 403" satırını şu satırla değiştirin:

yeniden yaz^/images/uploads.txt *\. (gif | jpg | jpeg | png) $ http://www.host.com/banned.jpg son

Önemli dizinleri üçüncü taraflardan koruyun

Diğer herhangi bir Web sunucusu gibi, nginx de IP adresi ve şifrelere dayalı olarak dizinlere erişimi düzenlemenize olanak tanır. Bu yetenek, sitenin belirli bölümlerini dış gözlerden gizlemek için kullanılabilir. Örneğin, URI'yi dış dünyaya göstermek için:

# Vi /etc/nginx/nginx.conf

konum/yüklemeler/(
# Yalnızca yerel ağdaki makinelere erişime izin verir
192.168.1.0/24'e izin ver;
# Diğerlerini yükseltir
Hepsini inkar etmek;
}

Artık yükleme dizinindeki belgelere yalnızca yerel kullanıcılar erişebilir. Bir şifre belirlemek için daha fazla adıma tıklamanız gerekecektir. Artık nginx'e özel bir şifre dosyası oluşturup gerekli hesapları hesabınıza eklemeniz gerekiyor (admin'e örnek olarak):

# Mkdir /etc/nginx/.htpasswd
# Htpasswd -c /etc/nginx/.htpasswd/passwd admin

# Vi /etc/nginx/nginx.conf

konum/yönetici/(
auth_basic "Kısıtlı";
auth_basic_user_file /etc/nginx/.htpasswd/passwd;
}

Ek bir saldırı komutu kullanılarak yeni koristuvach'lar eklenebilir:

# Htpasswd -s /etc/nginx/.htpasswd/passwd koristuvach

wikirist SSL

Sitenizde kredi kartı numaraları, diğer hizmetlere ait şifreler gibi özel müşteri verileri kullanılıyorsa veya üçüncü tarafların kullanabileceği diğer önemli bilgilere erişim sağlıyorsa bana şifreleme hakkında bilgi verin. Nginx, SSL ile iyi çalışır ve yetenekleri eksik olamaz.

Nginx kullanarak SSL şifrelemesini yapılandırmak için lütfen Vikonati kilka'yı ziyaret edin. basit kırıntılar. Öncelikle aşağıdaki komut sırasını kullanarak bir sertifika oluşturmalısınız:

# Cd /etc/nginx
# Openssl genrsa -des3 -out sunucusu.anahtarı 1024
# Openssl req -yeni -anahtar sunucusu.anahtar -çıkış sunucusu.csr
# Cp sunucu.anahtar sunucu.anahtar.org
# Openssl rsa -in sunucusu.anahtar.org -çıkış sunucusu.anahtarı
# Openssl x509 -req -days 365 -in sunucusu.csr -signkey sunucusu.anahtar -out sunucusu.crt

Ardından nginx yapılandırma dosyasındaki sertifikayı açıklayın:

# Vi /etc/nginx/nginx.conf

sunucu(
sunucu_adı ana bilgisayar.com;
443'ü dinle;
SSL açık;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
erişim_log /etc/nginx/logs/ssl.access.log;
error_log /etc/nginx/logs/ssl.error.log;
}

Bundan sonra Web sunucusunu yeniden başlatabilirsiniz:

# /Etc/init.d/nginx yeniden yükle

Doğal olarak Web sitesinin kendisinden destek almadan sorunsuz çalışacaktır.

Diğer yollar

Sistem değişkenleri için doğru değerleri ayarlayın

/etc/sysctl.conf dosyasını açın ve aşağıdaki satıra yerleştirin:

# Vi /etc/sysctl.conf

# Şirin saldırılarına karşı koruyun
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Yanlış ICMP mesajlarına karşı koruma sağlayın
net.ipv4.icmp_ignore_bogus_error_responses = 1
# SYN taşmasına karşı koruma sağlayın
net.ipv4.tcp_syncookies = 1
# Cihazdan yönlendirilerek korunur
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Sahteciliğe karşı koruma
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Mi bir yönlendirici değil
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# ExecShield'ı etkinleştir
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# Mevcut bağlantı noktası yelpazesini genişletiyoruz
net.ipv4.ip_local_port_range = 2000 65000
# TCP arabelleklerinin maksimum boyutunu artırmak
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1

Web sunucusunun kök dizinini görünür bölüme yerleştirin

Web sunucusunun kök dizinini bölümün görüşüne yerleştirerek ve herhangi bir bölümün yeni konumunu koruyarak bağlantılı dosyalar ve cihaz dosyalarına erişim sağlar ve sistemi, Web sunucusunun köküne erişimi reddedebilecek kişilerden korur. Yani /etc/fstab dosyasındaki giriş şuna benzer:

/ Dev / sda5 / nginx ext4 varsayılanları, nosuid, noexec, nodev 1 2

Chroot/hapishane nginx

Durum ne olursa olsun, nix sistemi eklentiyi viconn'un izole ortasında kapatmanıza olanak tanır. Linux'ta KVM, Xen, OpenVZ ve VServer teknolojilerini FreeBSD - Jail'de, Solaris - Zones'ta kullanabilirsiniz. Bu teknolojilerin her ikisi de mevcut değilse klasik bir chroot'a nginx koyabilirsiniz, hangisi daha güçlü istiyorsanız onu kullanabilirsiniz, aksi takdirde daha fazla saldırgan müdahale edebilecektir.

Nginx koruması için SELinux kurallarını yükleyin

Yalıtılmış medyaya iyi bir alternatif Viconnaya'dır yerel sistemler SELinux veya AppArmor gibi izinsiz girişleri algıladı ve kaçtı. Doğru şekilde ayarlanırsa kötü niyetli bir Web sunucusunun saldırılarını yenebilirler. Varsayılan olarak, nginx ile bağlantılı robotlar için yapılandırılmamışlar, proje çerçevesinde korunuyorlar SELinuxNginx(Http://sf.net/projects/selinuxnginx/) SELinux için ihtiyaç halinde kullanılabilecek kurallar oluşturulmuştur. Yalnızca aşağıdakileri indirip yükleyebilirsiniz:

# Tar -zxvf se-ngix_1_0_10.tar.gz
# Cd se-ngix_1_0_10 / nginx
# yapmak
# /usr/sbin/semodule -i nginx.pp

güvenlik duvarı ayarları

Yüksek dağıtıma hazır makinelere nginx yüklerseniz, genellikle sunucuda çalışan tek bir uç hizmetinden mahrum kalırsınız. Sunucunun güvenliğini sağlamak için, 80, 110 ve 143 numaralı bağlantı noktalarını açacak (elbette nginx, IMAP / POP3 proxy'lerini kullanmaktan da suçludur) ve çağrıları engelleyecek çok küçük bir kurallar kümesi oluşturabilirsiniz. Bugünün dünyasında her şey farklı.

Güvenlik duvarının arkasındaki bağlantı sayısını sınırlayın

Çok popüler olmayan bir web sitesi için, aynı IP adresinden gelen birkaç testi tek bir testte birleştirmek iyi bir fikirdir. Bu sizi çeşitli DoS saldırılarından ve kaba kuvvetten koruyabilir. Linux'ta standart iptables / netfilter durum modülünü kullanabilirsiniz:

# Iptables -A GİRİŞ -p tcp --dport 80 -i eth0 \
-M durum -- durum YENİ -m son --set
# Iptables -A GİRİŞ -p tcp --dport 80 -i eth0 \
-m durumu --durum YENİ -m son --güncelleme \
--saniye 60 --hitcount 15 -j BIRAKMA

Kurallar, bağlantı sayısı sınırını ağ başına bir IP'den 15'e düşürür. Aynı şey pf kullanılarak da yapılabilir:

# Vi /etc/pf.conf

web sunucusu_ip = "1.1.1.1"
masa ısrar etmek
hızlı bir şekilde engelle
$ ext_if protokolünü tcp'yi $ webserver_ip \'e iletin
bağlantı noktası www bayrakları S/SA durumunu korur \
(Maks-kaynak-bağlantısı 100, maksimum-kaynak-bağlantı hızı 15/60,\
aşırı yükleme gömme)

Bu kural, ardışık bağlantı sayısı sınırına (saatte 15) ek olarak, bir saatlik bağlantı sayısına da 100 olarak ek bir sınır koyar.

PHP ayarları

Nginx'i PHP ile bağlantılı olarak kullanıyorsanız ayarlamayı unutmayın. Eksen, çalınan sunucunun /etc/php/php.ini yapılandırma dosyasına bakmaktan sorumludur:

# Vi /etc/php/php.ini

# Güvenli olmayan işlevler devre dışı bırakılabilir
devre dışı_işlevler = phpinfo, sistem, posta, yürütme
# Bir komut dosyası için maksimum saat
max_execution_time = 30
# Maksimum saat, verileri işlemek için komut dosyasını nasıl kullanabilirsiniz?
max_input_time = 60
# Dış görünüm komut dosyasında görülebilen maksimum bellek miktarı
hafıza_sınırı = 8M
# Komut dosyasının POST yöntemine ek olarak kullandığı maksimum veri boyutu
post_max_size = 8M
# Maksimum dosya boyutu
upload_max_filesize = 2 milyon
# PHP betiklerini geliştiricilere gösterme
display_errors = Kapalı
# Güvenli Modu Etkinleştir
Safe_mode = Açık
# SQL Güvenli Modunu etkinleştir
sql.safe_mode = Açık
# Bu kataloğa yalnızca harici komutların eklenmesine izin verilir
Safe_mode_exec_dir = / yol / çalınan / dizin
# PHP ile ilgili bilgi akışından korunuyor
Exposure_php = Kapalı
# Vedemo günlükleri
log_errors = Açık
# Silinen dosyaların depolanmasını korur
izin_url_fopen = Kapalı

Visnovki

Makale önerilerindeki açıklamalara sadık kalarak daha fazla Web sunucusu hırsızlığının önüne geçeceksiniz. Lütfen tüm teknolojilerin konfigürasyonunuza uymayacağını unutmayın. Tutarlı, Zakhist VID Bumbfort, Urizannya Rozniriv Buerv'e atandı, nginx pіd rehabilitasyonun kaldırılması Kliyntiv, Padіnnya üretkenliğine ve iş vipadlerinde I Obrobsi Polotiv'deki zyov'a getirebilir. Bağlantı sayısının azaltılması orta yüklü web siteleri için üretkenlik üzerinde güçlü bir etkiye neden olacaktır, aksi takdirde sitede drenaj akışı düşük olduğundan israfa neden olacaktır. Yaptığınız değişikliklerin Web sayfasının üretkenliğini ve verimliliğini nasıl etkilediğini her zaman kontrol edin.

Günün kahramanı hakkında

Nginx dünyadaki en üretken ve popüler Web sunucularından biridir. Netcraft'tan elde edilen verilere dayanarak, Rambler, Yandex, Begun, WordPress.com, Wrike, vkontakte.ru, megashara.com, Librusek i Taba.ru gibi mastodonlar dahil olmak üzere dünya çapında 12 milyondan fazla Web sitesini desteklemek için kullanılmaktadır. . Sistem tıklamaları seçimi, epoll (Linux), kqueue (FreeBSD) ve havuzlara (1 ila 16 KB arası küçük arabellekler) dayalı bellek yönetimi mekanizmalarını kullanan çoğullamaya dayalı yetkin mimari, nginx'in istekte bulunmamasına izin verir. Bu yüksek navantazhennyami, 10.000'den fazla bir saatlik bağlantıyı vitrifiye ediyor (bu, C10K sorununun adıdır). İlk olarak Igor Sysoev tarafından Rambler şirketi için yazılmış ve 2004 yılında BSD benzeri bir lisans altında piyasaya sürülmüştür.

Temas halinde