Ters Proxy nedir?
Ters proxy yüklemek isteyebileceğiniz birkaç neden vardır. Ana sebeplerden biri mahremiyettir.
Birden çok sunucunuz varsa, bir ters proxy, sunucular arasındaki yükleri dengelemeye ve performansı artırmaya yardımcı olabilir. Ters proxy, istemciler için tek bir iletişim noktası sağladığından, birden çok sunucuda günlük kaydı ve raporlamayı merkezileştirebilir.
Nginx, statik içeriği hızla sunarak ve dinamik içerik isteklerini Apache sunucularına ileterek performansı artırabilir.
Bu kılavuz, sisteminize bir Nginx ters proxy kurmanıza ve yapılandırmanıza yardımcı olacaktır.
Önkoşullar
- Apache, PHP ve güvenlik duvarına sahip bir Linux sunucusu
- İle bir kök kullanıcıya erişim sudo erişim
- Linux komut satırı veya terminali (Ctrl–Alternatif–T ücretsiz, Alternatif–F2 CentOS için)
- Paket yöneticisi (APT gibi)
Nginx Ters Proxy Kurma
Adım 1: Nginx’i Varsayılan Depolardan Kurun
Bir terminal penceresi açın ve aşağıdakileri girin:
sudo apt-get update
Paket yöneticisinin yazılım listelerini yenilemeyi bitirmesine izin verin ve ardından aşağıdakileri girin:
sudo apt-get install nginx
İşlemin tamamlanmasına izin verin.
Not: Bu, Nginx’i CentOS veya Ubuntu’ya kurmanın en kolay yoludur, ancak en son kararlı sürümü yüklemeyebilir. Nginx yazılım depolarından eklemek ve yüklemek için Adım 2’ye geçin.
2. Adım (isteğe bağlı): Nginx’i Resmi Depodan yükleyin
Güvenlik Anahtarı Ekle
Bir terminal penceresinde aşağıdakileri girin:
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Bu, orijinal yazılım indirdiğinizi doğrulayan Nginx için imzalama anahtarını indirir.
Açık kaynaklar.liste Düzenleme için dosya
Terminalde aşağıdakileri girin:
sudo vi /etc/apt/sources.list
Depo Listesine Nginx Kaynakları Ekleyin
Aşağıdaki satırları girin /etc/apt/sources.list
az önce açtığınız dosya:
deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
Yer değiştirmek <CODENAME>
Debian dağıtımınızın kod adıyla.
Kaydetmek dosya ve çıkış.
Not: Nginx geliştiricileri, farklı Linux dağıtımları için farklı dizinler tutar. Bu kılavuz, ana hat tarafından desteklenen sürümün yüklenmesini önerir. Çoğu yazılımda olduğu gibi, daha yeni ancak denenmemiş paketler var. Bkz. belgeler dağıtımınıza özel paket için.
Nginx’in Son Sürümünü Yükleyin
Nginx’in en son sürümünü yüklemek için şu komutları kullanın:
sudo apt-get remove nginx-common
sudo apt-get update
sudo apt-get install nginx
Adım 3: Nginx’i Başlatın ve Yeniden Başlatma Sırasında Başlayacak Şekilde Yapılandırın
Nginx’i başlatmak için:
sudo systemctl start nginx
Nginx’i etkinleştirmek için:
sudo systemctl enable nginx
Nginx’in çalışıp çalışmadığını kontrol etmek için:
sudo systemctl status nginx
Çıktı size hizmetin olduğunu göstermelidir. aktif (çalışıyor)aşağıdaki resimde olduğu gibi:
4. Adım: Varsayılan Yapılandırma Dosyasının Bağlantısını Kaldırın
Terminalde aşağıdakileri girin:
sudo unlink /etc/nginx/sites-enabled/default
5. Adım: Yeni Yapılandırma Dosyası Oluşturun
Yeni bir yapılandırma dosyası oluşturmak için şunu girin:
cd /etc/nginx/sites-available/
sudo vi custom_server.conf
Yer değiştirmek custom_server
sizin için anlamlı olan bir isimle. Yeni dosyada şunu girin:
server {
listen 80;
location / {
proxy_pass http://my_server;
}
}
Bu çok basit bir Nginx ters proxy örneğidir. Nginx, tüm trafik için 80 numaralı bağlantı noktasındaki tüm trafiği dinleyecek şekilde ayarlanmıştır.
bu proxy_pass
komut, 80 numaralı bağlantı noktasındaki tüm trafiği şu adrese yönlendirir: http://my_server
. Sadece değiştir http://my_server
seçtiğiniz konuma ve Nginx müşteri isteklerini yakalayacak ve belirttiğiniz konuma yönlendirecektir. Bitirdikten sonra dosyayı kaydedin ve çıkın.
6. Adım: Yapılandırma Dosyasını Bağlayın ve Etkinleştirin
Yeni Nginx dosyasını etkinleştirmek için şunu girin:
ln -s /etc/nginx/sites-available/custom_server.conf
/etc/nginx/sites-enabled/custom_server.conf
Her zamanki gibi değiştir custom_server
Adım 5’te oluşturduğunuz yapılandırma dosyasının adıyla.
7. Adım: Nginx’i Test Edin ve Yeniden Başlatın
Nginx’i test etmek için:
sudo service nginx configtest
Nginx’i yeniden başlatmak için:
sudo service nginx restart
İsteğe Bağlı Nginx Yapılandırma Seçenekleri
Proxy Tamponları
Varsayılan olarak, Nginx, vekillik yaptığı sunucular için trafiği tamponlar. İstemci tam bir yanıt göndermeyi bitirene kadar bir sunucu yanıtı gönderilmediğinden arabellekler sunucu performansını artırır.
Arabelleği kapatmak için, 5. Adımdaki yapılandırma dosyasını açın. konum/bölümaşağıdakileri ekleyin:
proxy_buffering off;
Başlıkları İste
Başlıklar, sunucuya yapılan istekler veya istemci hakkında bilgi sağlar.
Nginx, başlık alanlarından ikisini yeniden tanımlar: host
için yapılandırıldı $proxy_host
Ve connection
için yapılandırıldı close
. Bu başlıkları kullanırsanız, yapılandırma dosyasındaki davranışı değiştirdiğinizden emin olun.
Herhangi bir başlık dizesi boşsa, Nginx bu alanları ortadan kaldırır.
Nginx’in heather’ları işleme biçimini değiştirmek için yapılandırma dosyanızda aşağıdaki komutları kullanın:
location / {
proxy_set_header Host $host;
}
Bu örnek, Nginx’e ayarlamasını söyler host
için $host
değişken.
Bir başlık alanının proxy sunucusuna iletilmesini önlemek için aşağıdaki gibi boş bir dize kullanın:
location / {
proxy_set_header header-variable "";
}
Yük dengeleme
Trafiği birkaç sunucuya yönlendirmek için yapılandırma dosyasını kullanabilirsiniz. Bu yapılandırmayı kullanmak için, yapılandırma dosyanız bu örneğe benzer görünecektir:
http {
server {
proxy_pass http://my_server
}
}
Başka bir deyişle, HTTP yapılandırması, Adım 5’teki sunucu yapılandırmasının dışına çıkar.
Bir sunucu grubu için bir ad oluşturmak üzere, upstream
emretmek:
http {
upstream server_group {
server my.server1.com weight=3;
server my.server2.com;
}
server {
location / {
proxy_pass http://server_group;
}
}
}
Bu atama iki sunucu alır – my.server1.com
Ve my.server2.com
– ve bunları bir araya toplar. Nginx, bu sunucu grubunu adı altında proxy’ler http://server_group
. Onları istediğiniz gibi yeniden adlandırabilirsiniz.
Bu örnek, weight
üç isteği yönlendirmek için komut my.server1.com
ardından 1 istek my.server2.com
. Bu, istemci yükünü sunucular arasında manuel olarak dengelemek için bir seçenektir. Başka bir yöntem, Nginx’in istekleri listelenen sunucular arasında eşit bir şekilde sıralayacağı herhangi bir atamayı basitçe atlamaktır.
Çözüm
Artık biliyorsun bir Nginx ters proxy’si nasıl kurulur.
Birleşik bir istemci deneyimi yaratan, çok sunuculu bir ortam için mükemmel bir araçtır. Tek bir sunucuyu anonim tutmak gibi daha basit görevler için de yararlı olabilir.
Ek olarak, Docker üzerinde NGINX ters proxy’sini nasıl konuşlandıracağınızı öğrenmek için Bilgi Tabanımızı da kullanabilirsiniz.