nginx bir talebi nasıl işler | english русский 简体中文 עברית 日本語 türkçe haberler [ing] hakkında indir [ing] güvenlik tavsiyeleri [ing] dökümantasyon sss bağlantılar [ing] kitaplar [ing] destek [ing] trac wiki nginx.com | |
This translation may be out of date. Check the English version for recent changes.
Ad-tabanlı sanal sunucularnginx, ilk olarak hangi sunucunun talebi işleyeceğine karar verir. 80 portunu dinleyen 3 sunucunun olduğu bir yapılandırma ile örnek verelim: server { listen 80; server_name example.org www.example.org; ... } server { listen 80; server_name example.net www.example.net; ... } server { listen 80; server_name example.com www.example.com; ... }
Bu yapılandırmada, nginx yalnızca talebin header bilgisinde bulunan “Host” datasını kullanarak hangi sunucunun cevap vereceğini belirliyor.
Eğer “Host” datası boş ise veya herhangi bir sunucu adı ile eşleşmez ise nginx talebi varsayılan sunucuya yönlendirir.
Yukarıdaki örnekte varsayılan sunucu ilk server ifadesi kabul edilir.
Eğer ilk server ifadesinin varsayılan olmasını istemiyorsanız, server { listen 80 default_server; server_name example.net www.example.net; ... }
Not: Varsayılan sunucu, sunucu adının değil listen portunun bir özelliğidir. Daha sonra bu konuya değinilecek. Tanımlanmamış sunucu adlarına gelen taleplerin işlenmesini engellemekEğer tanımlanmamış “Host” bilgisine sahip talepleri işlemek istemiyorsanız, bu talepleri düşüren bir varsayılan sunucu tanımlayabilirsiniz: server { listen 80 default_server; server_name _; return 444; } Böylece var olmayan alan adı için “_” ifadesini kullanarak nginx’in standart olmayan 444 koduna yönlendirerek bağlantıyı kapatıyoruz. Not: Bu sunucu için bir ad belirlemelisiniz. Aksi takdirde nginx hostname ifadesini kullanacaktır. Ad ve IP bazlı karışık sanal sunucularFarklı adreslerde bulunan sanal sunucuların yer aldığı biraz daha karışık bir yapılandırmayı inceleyelim: server { listen 192.168.1.1:80; server_name example.org www.example.org; ... } server { listen 192.168.1.1:80; server_name example.net www.example.net; ... } server { listen 192.168.1.2:80; server_name example.com www.example.com; ... }
Bu yapılandırmada, nginx Daha önce belirtildiği gibi, varsayılan bir sunucu, bir listen portunun ve değişik listen portları için tanımlanan çeşitli varsayılan sunucuların özelliğidir: server { listen 192.168.1.1:80; server_name example.org www.example.org; ... } server { listen 192.168.1.1:80 default_server; server_name example.net www.example.net; ... } server { listen 192.168.1.2:80 default_server; server_name example.com www.example.com; ... }
Basit bir PHP sitesi yapılandırmasınginx’in basit bir PHP sitesi için gelen talebi işlemek için nasıl bir lokasyon seçtiğini inceleyelim: server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
nginx ilk olarak literal dizgiler (string) tarafından verilmiş en spesifik lokasyonları arar. Yukarıdaki yapılandırmada tek literal lokasyon Not: Tüm tiplerde bulunan bu lokasyonlar sadece bir talebin, sorgu dizgisi olmayan URI datasını test eder. Bunun yapılmasının nedeni sorgu dizgisinde bulunan argümanların çeşitli yollarla verilebilmesidir, örneğin: /index.php?user=john&page=1 /index.php?page=1&user=john Ayrıca herhangi biri, herhangi bir şeyi sorgu dizgileri ile talep edebilir: /index.php?page=1&baska+bir+sey&user=john
Yukarıdaki yapılandırmada taleplerin nasıl işlendiğini inceleyelim:
|