Swarm - Обратный прокси NGINX Reverse Proxy
İçindekiler:
- Ön şartlar
- Nginx'i Ters Proxy Olarak Kullanma
- Geçen İstek Başlıkları
- HTTP olmayan proxy sunucusuna Nginx'i Ters Proxy olarak yapılandırma
- Ortak Nginx Ters Proxy Seçenekleri
- Sonuç
Ters proxy, bir istemci isteği alan, isteği bir veya daha fazla proxy sunucusuna gönderen, yanıtı alan ve sunucunun istemciye yanıtını veren bir hizmettir.
Performansı ve ölçeklenebilirliği nedeniyle NGINX, HTTP ve HTTP olmayan sunucular için genellikle ters proxy olarak kullanılır. Tipik bir ters proxy yapılandırması, Nginx'i Node.js, Python veya Java uygulamalarının önüne koymaktır.
Nginx'i ters proxy olarak kullanmak size birkaç ek avantaj sağlar:
- Yük Dengeleme - Nginx, istemcilerin isteklerini proxy sunuculara dağıtarak performansı, ölçeklenebilirliği ve güvenilirliği artıran yük dengelemesi gerçekleştirebilir. Önbellekleme - Nginx'i ters proxy olarak kullanarak, sayfa yükleme sürelerini hızlandırmak için sayfaların önceden oluşturulmuş sürümlerini önbelleğe alabilirsiniz. Proxy sunucuların yanıtlarından alınan içeriği önbelleğe alarak ve proxy sunucusuna her seferinde aynı içerik için başvurmak zorunda kalmadan istemcilere yanıt vermek için kullanarak çalışır. SSL Sonlandırması - Nginx, istemcilerle bağlantılar için bir SSL bitiş noktası görevi görebilir. Gelen SSL bağlantılarını yönetir ve şifresini çözer ve proxy sunucusunun yanıtlarını şifreler. Sıkıştırma - Proxy sunucusu sıkıştırılmış yanıtlar göndermezse, istemcilere göndermeden önce Nginx'i yanıtları sıkıştıracak şekilde yapılandırabilirsiniz. DDoS Saldırılarını Azaltma - Tek bir IP adresi başına gelen istekleri ve bağlantı sayısını normal kullanıcılar için tipik bir değerle sınırlandırabilirsiniz. Nginx ayrıca istemci konumuna ve “User-Agent” ve “Referer” gibi istek başlıklarının değerine göre erişimi engellemenize veya kısıtlamanıza olanak tanır.
Bu makalede, Nginx'i ters proxy olarak yapılandırmak için gereken adımlar açıklanmaktadır.
Ön şartlar
Ubuntu, CentOS veya Debian sunucunuzda Nginx'in yüklü olduğunu varsayıyoruz.
Nginx'i Ters Proxy Olarak Kullanma
Nginx'i bir HTTP sunucusunun ters proxy'si olarak yapılandırmak için etki alanının sunucu bloğu yapılandırma dosyasını açın ve içinde bir konum ve proxy sunucusu belirtin:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }
Proxy sunucu URL'si
proxy_pass
yönergesi kullanılarak ayarlanır ve
HTTP
veya
HTTPS
protokol, etki alanı adı veya IP adresi ve isteğe bağlı bir bağlantı noktası ve URI'yi adres olarak kullanabilir.
Yukarıdaki yapılandırma Nginx'e
/app
konumuna tüm istekleri
http://127.0.0.1:8080
adresindeki proxy sunucusuna aktarmasını bildirir.
/etc/nginx/sites-available
dizininde, CentOS
/etc/nginx/conf.d
dizininde
/etc/nginx/conf.d
.
location
ve
proxy_pass
yönergelerinin nasıl çalıştığını daha iyi göstermek için aşağıdaki örneği alalım:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }
Bir ziyaretçi
http://example.com/blog/my-post
adresine erişirse, Nginx bu isteği
http://node1.com:8000/wordpress/my-post
.
Proxy sunucusunun adresi bir URI (
/wordpress/
) içerdiğinde, proxy sunucusuna iletilen istek URI'sı yönergede belirtilen bir URI ile değiştirilir. Proxy sunucusunun adresi URI olmadan belirtilirse, tam istek URI'si proxy sunucusuna iletilir.
Geçen İstek Başlıkları
Nginx bir isteği proxy olarak oluşturduğunda, istemciden,
Host
ve
Connection
proxy isteminde iki başlık alanını otomatik olarak tanımlar ve boş üstbilgileri kaldırır.
Host
$proxy_host
değişkenine ayarlandı ve
Connection
kapanacak şekilde ayarlandı.
Proxy bağlantıları için üstbilgileri ayarlamak veya ayarlamak için
proxy_set_header
yönergesini ve ardından üstbilgi değerini kullanın. Mevcut tüm İstek Üstbilgilerinin ve izin verilen değerlerinin bir listesini burada bulabilirsiniz. Bir başlığın proxy sunucusuna iletilmesini önlemek istiyorsanız, boş bir
""
dizesine ayarlayın.
Aşağıdaki örnekte,
Host
üstbilgisi alanının değerini
$host
olarak değiştiriyoruz ve değerini boş bir dizeye ayarlayarak
Accept-Encoding
üstbilgisi alanını kaldırıyoruz.
location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }
Yapılandırma dosyasını her değiştirdiğinizde, değişikliklerin etkili olması için Nginx hizmetini yeniden başlatmanız gerekir.
HTTP olmayan proxy sunucusuna Nginx'i Ters Proxy olarak yapılandırma
Nginx'i HTTP proxy olmayan bir sunucunun ters proxy'si olarak yapılandırmak için aşağıdaki yönergeleri kullanabilirsiniz:
-
fastcgi_pass- proxy'yi bir FastCGI sunucusuna tersine çevirir.uwsgi_pass- proxy'yi bir uwsgi sunucusuna tersine çevirir.scgi_pass- proxy'yi bir SCGI sunucusuna ters çevirir.memcached_pass- Proxy'yi Memcached sunucusuna tersine çevirir.
En yaygın örneklerden biri, PHP-FPM için ters proxy olarak Nginx kullanmaktır:
server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Ortak Nginx Ters Proxy Seçenekleri
HTTPS üzerinden içerik sunmak günümüzde bir standart haline gelmiştir. Bu bölümde, önerilen Nginx proxy parametreleri ve başlıkları da dahil olmak üzere HTTPS Nginx ters proxy yapılandırmasına bir örnek vereceğiz.
location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
-
proxy_http_version 1.1-proxy_http_version 1.1için HTTP protokolü sürümünü tanımlar, varsayılan olarak 1.0'a ayarlar. Websockets ve kalıcı bağlantılar için 1.1 sürümünü kullanmanız gerekir.proxy_cache_bypass $http_upgrade-proxy_cache_bypass $http_upgradeönbellekten alınmayacağı koşulları belirler.Upgrade $http_upgradeveConnection "upgrade"- Uygulamanız Web Soketleri kullanıyorsa bu başlık alanları gereklidir.Host $host- Aşağıdaki öncelik sırasına göre$hostdeğişkeni şunları içerir: istek satırından hostname veyaHostistek başlığı alanından hostname veya bir taleple eşleşen sunucu adı.X-Real-IP $remote_addr- Gerçek ziyaretçi uzak IP adresini proxy sunucusuna iletir.X-Forwarded-For $proxy_add_x_forwarded_for- İstemcinin proxy üzerinden geçirildiği her sunucunun IP adreslerini içeren bir liste.X-Forwarded-Proto $scheme- Bir HTTPS sunucu bloğu içinde kullanıldığında, proxy sunucusundan gelen her HTTP yanıtı HTTPS'ye yeniden yazılır.X-Forwarded-Host $host- İstemci tarafından istenen orijinal ana bilgisayarı tanımlar.X-Forwarded-Port $server_port- İstemci tarafından istenen orijinal bağlantı noktasını tanımlar.
Sonuç
Nginx'i Ters Proxy olarak kullanmayı öğrendiniz. Ayrıca, sunucuya ek parametrelerin nasıl iletileceğini ve proxy isteklerde farklı başlık alanlarını nasıl değiştireceğinizi ve ayarlayacağınızı gösterdik.
nginxDeğişiklikleri için Dosyaları Denetle a0> a0> a0> a0> a0> a0> a0> a0> a0> a0> a0> a0> a0> a0> a0> <... Bir dosyayı benzersiz bir şekilde tanımlayan karakter dizisi, dijital parmak izi. Bir dosyanın birkaç baytını bile değiştirin - örneğin, bir virüs bulaştırarak veya eski bir sürümü yenisiyle değiştirerek - ve sağlama toplamı değişir. Marxio File Checksum Verifier (ücretsiz / donationware), belirli bir dosya için bir sağlama toplamı oluşturacak ve dah
Marxio File Checksum Verifier işlemde çok basittir. Bir dosyayı pencereye sürükleyin veya standart bir dosya iletişim kutusunu kullanarak birini seçin. Ardından MD5 veya CRC32 gibi bir sağlama toplamı algoritması seçin. (Bu aracın hedef kitlesi iseniz, bu şeylerin ne anlama geldiğini bilirsiniz.) Ardından, dosyanın bilinen bir sürümünden bir sağlama toplamını alt metin kutusuna yapıştırın ve kontrol edin! Marxio, eşleşip eşleşmediğini çabucak anlatacak. (Çok büyük dosyalar biraz zaman alabilir,
Ndox ile odoo'yu ters proxy olarak yapılandırma
Odoo yerleşik bir web sunucusuyla birlikte gelir, ancak çoğu durumda, istemcilerle Odoo sunucusu arasında bir aracı görevi görecek bir ters proxy olması önerilir. Bu kılavuz, Nginx'in Odoo için ters proxy olarak nasıl kullanılacağına ilişkin talimatlar sağlar.
Postfixadmin ile bir posta sunucusu kurma
Postfix Admin, kullanıcıların Postfix tabanlı bir e-posta sunucusunu yapılandırmasına ve yönetmesine izin veren web tabanlı bir arayüzdür. Postfix Admin ile birden fazla sanal alan adı, kullanıcı ve takma ad oluşturabilir ve yönetebilirsiniz.







