Ters Proxy Nasıl Kurulur (Nginx ve Apache için Adım Adım)
Yayınlanan: 2020-08-14Bir ters proxy, bir web sunucusunun önüne oturur ve tüm istekleri kaynak sunucuya ulaşmadan önce alır. Yönlendirme proxy'sine benzer şekilde çalışır, ancak bu durumda kullanıcı veya istemci yerine proxy kullanan web sunucusudur. Ters proxy'ler genellikle web sunucusunun performansını, güvenliğini ve güvenilirliğini artırmak için kullanılır.
Örneğin, A Sunucusunda example.com
etki alanında barındırılan WordPress dışı bir siteniz olabilir ve B Sunucusunda barındırılan example.com/blog
URL adresindeki WordPress'te blogunun çalışmasını sağlayabilirsiniz. Bunu, sunucu için bir ters proxy ekleyerek yapabilirsiniz. birincil sitenizi barındıran sunucu. Bloga gelen istekleri farklı bir sunucuya (örneğin, Kinsta gibi yönetilen bir WordPress ana bilgisayarına) yönlendirmek için ters proxy'yi yapılandırabilirsiniz.
Bu makalede, ters proxy sunucularının temellerini, nasıl çalıştıklarını, başlıca faydalarının neler olduğunu ve bunları WordPress sitenizi hızlandırmak ve güvenli hale getirmek için nasıl kullanabileceğinizi öğreneceksiniz.
Heyecanlı? Hadi başlayalım!
Ters Proxy Nedir?
Ters proxy sunucusunun ne olduğunu anlamak için önce rolünü bilmeniz ve ilgili tüm terimlerine aşina olmanız gerekir.
Normalde bir alan adı girerek veya bir bağlantıya tıklayarak web'e göz attığınızda, tarayıcınız/cihazınız doğrudan web sitesinin sunucusuna bağlanır ve kaynaklarını indirmeye başlar.

Ziyaret ettiğiniz web sitelerinden IP adresinizi anonimleştirmek istiyorsanız, önce tüm isteklerinizi göndermek için bir proxy sunucusu kullanabilirsiniz. İsteklerinizi DNS çözümleyicisine iletir ve ardından web sitesinin kaynaklarını kendi ana sunucusundan indirir.
Daha sonra, bu kaynakları cihazınıza aktaracaktır. Buna ileri proxy denir.

İsteğinizin ileri proxy'den geldiğini düşündüğü için web sitesinden tamamen gizlendiniz.
Kullanıcı gizliliğini artırmanın yanı sıra, bir yönlendirme proxy'si esas olarak coğrafi içerik kısıtlamalarını atlamak için kullanılır. Örneğin, bölgenizde engellenen bir videoyu izlemek istiyorsanız, videonun görüntülenebileceği bir IP adresi olan bir yönlendirme proxy'si kullanabilirsiniz.
İleri proxy, Sanal Özel Ağ (VPN) ile hemen hemen aynı şekilde çalışır, ancak bunlar benzersiz kullanım durumları olan farklı teknolojilerdir (ancak bazen çakışabilirler).
Ters Proxy Sunucusu ve İleri Proxy Sunucusu
Bir ters proxy sunucusu, tıpkı bir kullanıcının/istemcinin aynı şeyi elde etmek için bir ileri proxy'yi nasıl kullanabileceği gibi, menşe sunucunun anonimliği sürdürmesi ve güvenliği artırması için bir cephe görevi görür. Hiçbir kullanıcının veya istemcinin doğrudan kaynak sunucuyla iletişim kurmamasını sağlar.

İleri vekil ile ters vekil arasındaki fark küçüktür, ancak farklı şekilde çalışırlar.
İşlevleri arasında örtüşme olmadığından ikisi birlikte çalışabilir. Tipik olarak, kullanıcılar/istemciler bir ileri proxy kullanırken, kaynak sunucular bir ters proxy kullanır.

Bir sunucu yöneticisi, ters proxy'nin nasıl çalıştığını denetleyebildiğinden, onu birçok yararlı özelliği etkinleştirmek için kullanabilirsiniz.
Tüm faydalarını bu yazının ilerleyen kısımlarında listeleyeceğiz.
Neden Ters Proxy Kullanmalısınız?
Birçok işletme, özellikle büyük işletmeler, benzersiz ihtiyaçlarına göre özel olarak hazırlanmış ve WordPress'te çalışmayan ısmarlama web siteleri kullanır. Bazı örnekler, banka ve sigorta web sitelerini içerir.
Diğer durumlarda, bir işletme, sitelerini herhangi bir harici yazılım (ör. WordPress) yüklemelerine izin vermeyen harici bir hizmette barındırabilir. Bunlar genellikle Shopify gibi bir e-ticaret platformu kullanan küçük ve orta ölçekli perakendecilerdir.
WordPress'in güçlü CMS özellikleri olduğundan, ısmarlama web sitelerine sahip büyük işletmeler de dahil olmak üzere birçok işletme, bloglarını WordPress kullanarak barındırmayı tercih edebilir.
Bu sorunu aşmanın bir yolu, WordPress'i ana web sitesinin alt etki alanına kurmak ve gezinme menülerini, kullanıcıların ana web sitesi ile blog arasında kolayca geçiş yapabileceği şekilde yapılandırmaktır.
Alt alan adları benzersiz bir alan adı gibi davrandığından sitenizin SEO'sunu etkileyebilir. Google, hem alt alanları hem de alt dizinleri eşit şekilde ele alsa da, bir web sitesini bir alt alanda barındırılıyorsa, bir alt dizinde barındırılıyorsa arama motoru sıralamaları için optimize etmek daha fazla çaba gerektirir.

Google, hem alt alan adlarına hem de alt dizinlere eşit davrandığını bir kez daha doğruladı, ancak bazı SEO uzmanları buna katılmıyor. Ve sitenin SEO'sunu etkilemese bile, bir alt dizinde barındırılan bir sitenin bakımı daha kolaydır.
Bu nedenle, istekleri sitenin ayrı bir sunucuda barındırılan bloguna yönlendirmek için bir ters proxy kullanabilirsiniz. Örneğin, bir banka ana web sitesini sunucularında güvenli bir şekilde barındırabilir, ancak WordPress destekli bloglarını Kinsta gibi yönetilen bir WordPress ana bilgisayarında ayrı olarak barındırabilir.

İki farklı siteyi tek bir alan adı altında birleştirmek, ters proxy kullanmanın en önemli avantajlarından biridir. Markaların sitelerini düzenli, profesyonel tutmasına ve güvenilirliğini korumasına yardımcı olur.
Ters Proxy Kullanmanın Faydaları
Yukarıdaki kullanım durumunun yanı sıra, ters proxy'ler başka birçok fayda da sağlar. Aşağıdaki bölüm bazı önemli avantajlarını tartışmaktadır.
Yük dengeleme
Tek bir kaynak sunucu, milyonlarca günlük benzersiz ziyaretçisi olan bir web sitesi için gelen tüm trafiği kaldıramaz. Bu gibi durumlarda, trafiği çok sayıda sunucudan oluşan bir havuz arasında akıllıca dağıtabilirsiniz. Genellikle, tüm sunucular, tek bir hata noktasını ortadan kaldırmak için aynı içeriği barındıracak ve web sitesini daha güvenilir hale getirecektir.
Bir ters proxy, gelen trafiği kaynak sunucuya ulaşmadan alabildiği için bunu ayarlamanın harika bir yoludur. Origin sunucusu aşırı yüklenirse veya tamamen başarısız olursa, site işlevselliğini etkilemeden trafiği diğer sunuculara dağıtabilir.
Ters proxy'ler ayrıca, her sunucunun optimize edildiği belirli bir işlevi yerine getirmesiyle gelen istekleri birkaç sunucuya yönlendirebilir. Ters proxy daha sonra tüm sunuculardan yanıt toplayabilir ve bunları istemciye iletebilir.
Popüler ters proxy'lerin çoğunu öncelikli olarak yük dengeleme için kullandığımızdan, bunlara Load Balancer adı da verilir.
Küresel Sunucu Yük Dengeleme (GSLB)
GSLB, web sitesi trafiğini dünya çapında stratejik olarak yerleştirilmiş birçok sunucu arasında dağıtmak için gelişmiş bir yük dengeleme yöntemidir. Genellikle, ters proxy'nin sunucu düğümünü istemci ve sunucu arasındaki en hızlı seyahat süresine göre seçtiği, herhangi bir yayın yönlendirme tekniği ile yapılır.
GSLB, sitenin güvenilirliğini ve güvenliğini önemli ölçüde artırmakla kalmaz, aynı zamanda gecikme ve yükleme sürelerini de azaltarak kullanıcı deneyimini geliştirir. Kaynak sunucuların hesaplama kaynaklarını daha da fazla boşaltmak için GSLB'yi Kaşıkla Besleme gibi diğer ağ optimizasyon teknikleriyle birlikte kullanabilirsiniz.
Global Sunucu Yük Dengeleme'yi sunucunuzda manuel olarak ayarlayabilmenize rağmen, genellikle Cloudflare ve KeyCDN (aynı zamanda Kinsta CDN'ye de güç sağlar) gibi özel CDN'ler tarafından halledilir. Kinsta, barındırdığı tüm web sitelerine Google Cloud Platform tarafından desteklenen bir Yük Dengeleyici aracılığıyla hizmet verir.
Arttırılmış güvenlik
Ters proxy'ler, IP adresini ve kaynak sunucuların diğer özelliklerini gizleyebilir. Böylece, web sitenizin başlangıç sunucusu anonimliğini daha iyi koruyabilir ve güvenliğini önemli ölçüde artırabilir.
Ters proxy, ana sunucuya ulaşmadan önce tüm trafiği alacağından, herhangi bir saldırgan veya bilgisayar korsanı, web sitenizi DDoS saldırıları gibi güvenlik tehditleriyle hedeflemeyi daha zor bulacaktır.
Ters proxy'yi yaygın siber saldırılara karşı daha sıkı güvenlikle sağlamlaştırmak için katı bir güvenlik duvarı kullanabilirsiniz. Bir ters proxy kurulu olmadan, kötü amaçlı yazılımları kaldırmak veya yayından kaldırmaları başlatmak zordur.
HAProxy gibi bir ters proxy, etkinleştirilmemiş bir web sunucusuna temel HTTP erişim kimlik doğrulaması ekleyebilir. Çeşitli istek türleri için merkezi kimlik doğrulaması eklemek için bir ters proxy de kullanabilirsiniz.
Güçlü Önbelleğe Alma
Hem statik hem de dinamik içeriği önbelleğe alarak web hızlandırma amacıyla bir ters proxy kullanabilirsiniz. Bu, kaynak sunucudaki yükü azaltabilir ve daha hızlı bir web sitesi ile sonuçlanabilir.
Örneğin, kaynak sunucunuz ABD'deyse ve Avrupa'dan bir kullanıcı web sitenizi ziyaret ederse, sitenizin önbelleğe alınmış bir sürümünü Avrupa'daki bir ters proxy sunucusundan sunabilirsiniz. Ters proxy, kullanıcıya orijinal sunucudan daha yakın olduğu için, web sitesinin yüklenmesi daha az zaman alacak ve bu da mükemmel performans göstermesini sağlayacaktır.
Vernik ve Nginx FastCGI, web içeriğini önbelleğe almak için kullanılan ters proxy'lerin öne çıkan örnekleridir. Siteniz Kinsta ile barındırılıyorsa, önbelleğe alma konusunda endişelenmenize gerek yoktur, çünkü Kinsta sizin için tüm önbelleğe alma ayak işlerini halleder.
Üstün Sıkıştırma
Sunucu yanıtları çok fazla bant genişliği kullanır. Sunucu yanıtlarını (örneğin gzip ile) istemciye göndermeden önce sıkıştırmak, gereken bant genişliği miktarını azaltabilir ve ağ üzerinden sunucu yanıtlarını hızlandırabilir.
Ters proxy, kaynak sunucular ve istemci arasında bulunduğundan sunucu yanıtlarını sıkıştırmak için idealdir.
Optimize edilmiş SSL Şifrelemesi
Her istemci için SSL/TLS isteklerinin şifrelenmesi ve şifresinin çözülmesi, kaynak sunucu için oldukça zorlayıcı olabilir. Bir ters proxy, içerik sunma gibi diğer önemli görevler için kaynak sunucunun kaynaklarını boşaltmak için bu görevi üstlenebilir.
SSL/TSL şifrelemesini ve şifre çözmeyi boşaltmanın bir başka avantajı da, kaynak sunucudan coğrafi olarak uzak olan istemciler için gecikmeyi azaltmaktır.
Bu görevi daha da optimize etmek için özel SSL/TLS hızlandırma donanımına sahip bir ters proxy'yi de seçebilirsiniz. Böyle bir ters proxy, SSL/TLS sonlandırma proxy'si olarak adlandırılır. Varnish gibi bazı sunucular SSL/TSL protokollerini desteklemez, bu nedenle bir SSL/TSL sonlandırma ters proxy'si, içlerinden geçen trafiğin güvenliğini sağlamaya yardımcı olabilir.
Daha İyi A/B Testi
Çoğu A/B test aracı, işlevlerini yüklemek için harici JavaScript kitaplıkları kullanmanızı gerektirir. Ancak, üçüncü taraf komut dosyalarını yüklemek, sayfa yükleme sürelerinizi yavaşlatabilir ve kullanıcılar için dalgalı bir deneyim yaratabilir.
Bunun yerine, sunucu düzeyinde iki ayrı akış oluşturmak için bir ters proxy kullanabilirsiniz. Örneğin, trafik yeniden yönlendirmesini kontrol etmek için split_clients
veya sticky route
yöntemlerini kullanabilirsiniz.
Ters proxy ile A/B testi gerçekleştirme hakkında daha fazla bilgi edinmek için Nginx ve freeCodeCamp'teki eğiticilere başvurabilirsiniz.
Trafiği İzleme ve Günlüğe Kaydetme
Ters proxy, içinden geçen tüm istekleri yakalar. Bu nedenle, trafiği izlemek ve günlüğe kaydetmek için bunları merkezi bir merkez olarak kullanabilirsiniz. Tüm web sitenizin bileşenlerini barındırmak için birden fazla web sunucusu kullansanız bile, ters proxy kullanmak sitenizden gelen ve giden tüm verileri izlemeyi kolaylaştıracaktır.
En Popüler Ters Proxy'ler
W3Techs'e göre, web sitelerinin neredeyse %83'ü izledikleri ters proxy hizmeti kullanmıyor.

Ters proxy kullanan (yukarıda listelenmiştir) %17 web sitelerinden çoğunun CDN olduğunu fark edeceksiniz. Bunun nedeni, çoğu ters proxy'nin bir güvenlik önlemi olarak varsayılan olarak varlıklarını gizlemesidir. Bu nedenle, hangi ters proxy'lerin en popüler olduğunu bulmak için W3Techs gibi web sitesi izleme hizmetlerine güvenemezsiniz.
Araştırma ve deneyimlerimize göre, günümüzde kullanılan en popüler ters proxy'ler şunlardır:
Nginx
Nginx, ters proxy olarak da hizmet verebilen açık kaynaklı bir web sunucusudur. Web sitelerini barındırmak için kullanılmasının yanı sıra, aynı zamanda en yaygın kullanılan ters proxy ve yük dengeleme çözümlerinden biridir. Netcraft'a göre, Aralık 2019'da 479 milyondan fazla web sunucusu Nginx'i kullanıyordu ve bu da onu web sunucusu pazar payında lider yapıyor.

Nginx, yukarıda tartışılan tüm ters proxy avantajlarını ve daha fazlasını sağlar. Web performansını, güvenliğini, güvenilirliğini ve ölçeklenebilirliğini artırır. Nginx'i, aynı zamanda çalışırken yeniden yüklenebilen yapılandırma dosyasını kullanarak yapılandırabilirsiniz. Kinsta'da Nginx ters proxy, kullanabileceğiniz birkaç premium eklentiden biridir.
Ancak, API tabanlı yapılandırma seçeneklerine ve büyük kurumsal web sitelerine uygun diğer özelliklere erişmek için ticari bir teklif olan Nginx Plus'ı da kullanabilirsiniz.
Kinsta, tüm web sitelerini Nginx ile güçlendiriyor. Rekabet ettiği her kategoride Review Signal'in En İyi web barındırma statüsünde yer aldı. Nginx kullanan diğer bazı büyük şirketler MaxCDN, Cloudflare ve Netflix'tir.
Nginx'i temel bir ters proxy olarak ayarlamak basittir. Nginx ayrıca sunucunuzun ters proxy'sini gereksinimlerinize göre özelleştirmek için size çeşitli yönergeler sağlar. Bunu nasıl yapacağımızı daha sonraki bir bölümde tartışacağız. Kinsta müşterisiyseniz, aynı bölümde Kinsta ile barındırılan web siteleri için ters proxy kullanmayı da öğreneceksiniz.
vernik
Varnish, yerleşik bir önbellek motoruna sahip açık kaynaklı bir HTTP ters proxy'sidir. Öncelikle dinamik içerik sunan yüksek trafikli web siteleri için tasarlanmıştır. Varnish'i yük dengeleyici, web uygulaması güvenlik duvarı (WAF) ve uç kimlik doğrulama ve yetkilendirme sunucusu olarak da kullanabilirsiniz.
Linux ve FreeBSD'nin tüm modern sürümlerinde çalışır ve esas olarak Nginx veya Apache web sunucuları için bir ön taraf olarak kullanılır. Varnish'in güçlü ve son derece esnek Varnish Yapılandırma Dili (VCL), HTTP isteklerini işleme, önbelleğe alma ve bir veya daha fazla web sunucusuna bağlanma gibi çeşitli özellikleri tanımlamanıza olanak tanır.
Bu nedenle, birçok CDN, içeriği hızlı bir şekilde sunmak için ana temeli olarak Varnish'i kullanır.
Varnish ayrıca, bir web sayfasının bölümlerini diğer web sayfalarında yeniden kullanmanıza yardımcı olan bir dil olan Kenar Tarafı İçerir'i (ESI) destekler. Web siteniz farklı sayfalarda çok fazla tekrarlanan içerik kullanıyorsa, ESI sık kullanılan bölümleri önbelleğe alarak sitenizin sayfa yükleme sürelerini hızlandırmanıza yardımcı olabilir.
Varnish'i çeşitli modülleri (VMOD'ler) ile genişletebilirsiniz. Varnish'i WordPress için ters proxy olarak nasıl kuracağınızı öğrenmek için Varnish'in resmi eğitimine gidin.
Apache Trafik Sunucusu
Apache Traffic Server, açık kaynaklı bir önbelleğe alma proxy sunucusudur. Hızlı, ölçeklenebilir özellikleriyle popülerdir. Yahoo tarafından geliştirilen ticari bir üründü! uzun zaman önce, ancak açık kaynak yaptılar ve bakım için Apache Vakfı'na bağışladılar.
Comcast, Akamai, LinkedIn, Yahoo ve Apple gibi birkaç büyük içerik ağı ve CDN, teknolojilerini güçlendirmek için Apache Traffic Server'ı kullanır.
Web sunucunuzda bir ters proxy kurmak için bir HTTP sunucusu arka plan programı olan Apache HTTP Sunucusunu ( Apache httpd ) da kullanabilirsiniz. Temel bir web sunucusu görevi görmenin yanı sıra, kullanıcılara statik ve dinamik içerik sunmanıza da yardımcı olur. Bu makalenin ilerleyen bölümlerinde Apache'yi ters proxy olarak nasıl kuracağınızı öğreneceksiniz.

HAProxy
HAProxy, açık kaynaklı bir ters proxy ve yük dengeleyicidir. Linux dağıtımları ve bulut platformları dahil olmak üzere çoğu mevcut web sunucusu mimarisiyle entegre olacak şekilde tasarlanmıştır. Nginx'e benzer şekilde HAProxy, olaya dayalı bir G/Ç modeli kullanır ve istekleri birden çok çalışan işlemi arasında bölmeyi destekler.
HTTP istekleri için HAProxy, ağır yükler altında bile olağanüstü iyi performans gösterir. Airbnb, Reddit, Instagram, Stack Overflow, Tumblr, GitHub ve Imgur gibi internetteki en yüksek trafikli web sitelerinden bazıları, web sitelerini verimli bir şekilde sunmak için HAProxy kullanıyor.
HAProxy'nin nasıl uygulanacağını tartışmak bu makalenin kapsamı dışındadır, ancak nasıl çalıştığını anlamak için belgelerine başvurabilirsiniz.
Not: Traefik ve Envoy, HAProxy'nin diğer iki açık kaynak alternatifidir. Hem yüksek performanslı ters proxy'lerdir hem de birçok gelişmiş özelliğe sahip yük dengeleyicilerdir.
Diğer bazı popüler ters proxy'ler AWS Elastic Load Balancer, GLBC, DigitalOcean Load Balancer ve Google Cloud Load Balancer'dır. Bugün kullanılan en iyi ters proxy'lerin ve yük dengeleyicilerin kapsamlı bir listesi için Stackshare.io'ya göz atabilirsiniz.
Ters Proxy: WordPress Siteleri İçin Kullanım Örnekleri
Kinsta'da barındırılan siteler de dahil olmak üzere WordPress siteleri için bir ters proxy kullanmak için temel olarak üç kullanım durumu vardır.

Bugün WordPress siteleri için kullanılan en popüler ters proxy olduğundan, bu örnek için yalnızca Nginx'i kullanacağız. Ancak aynı temel ilkeler diğer ters vekiller için de geçerli olacaktır.
Ters proxy'lerin yüklenmesi, yapılandırılması ve desteklenmesi genellikle zordur. Bu nedenle Kinsta, kurulum konusunda yardıma ihtiyacınız olan her bir ters proxy için aylık 50 ABD doları ek abonelik sunar. Daha fazla ayrıntı için Kinsta'nın destek ekibine ulaşabilirsiniz.
1. Aynı Sunucuda Barındırılan Ana ve Proxy Siteler
Hem ana site hem de proxy'li site aynı sunucuda barındırılıyorsa, ana site bir WordPress kurulumunda çalışabilirken, ayrı bir WordPress kurulumu proxy'li siteye güç sağlar.
Hem sitelere hem de paylaşılan web sunucusuna erişiminiz olacağından, ana site için ters proxy kurallarını ayarlayabilir ve ardından proxy'li siteyi ters proxy'den yüklenecek şekilde yapılandırabilirsiniz.
Bu sitelerin her ikisini de Kinsta'da barındırıyorsanız, Kinsta'nın destek ekibine ulaşabilir ve onlardan sizin için ters proxy kurmalarını isteyebilirsiniz. İşte izlemeniz gereken prosedür:
- Hem ana sitenin hem de proxy sitenin Kinsta'da barındırıldığından emin olun. Değillerse, her iki siteyi de manuel olarak veya bir taşıma isteği göndererek Kinsta ortamına taşıyabilirsiniz.
- Bir destek bileti açın ve Kinsta'nın destek ekibine etki alanı yapılandırmasının net bir açıklamasını sağlayın. Ters proxy'yi kurmak yaklaşık bir iş günü sürecek.
- Kinsta, ana sitede ilgili ters proxy kurallarını ayarlayacak ve proxy yapılan siteyi ters proxy üzerinden yüklenecek şekilde yapılandıracaktır.
Kinsta tarafından bir ters proxy üzerinden bir alt dizin sitesi yüklemek için kullanılan standart Nginx ters proxy yönergeleri şunlardır:
location ^~ /subfolder/ { proxy_pass http://subfolder.domain.com; 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; }
Yukarıdaki kodda, /subfolder/
yer tutucusunu gerçek alt dizin adıyla değiştirmeniz gerekir (örn. /blog/
, /shop/
). Ayrıca, http://subfolder.domain.com
alt etki alanı, ters proxy'yi proxy siteye yönlendirmek için kullanılan URL ile eşleşmelidir.
location
yönergesi, Nginx'e tanımlanan dizeyi bulursa, daha fazla eşleşme aramayı bırakması ve burada listelenen yönergeleri kullanması gerektiğini söylemek için şapka ve tilde sembollerini ( ^~ ) içerir. Nginx'in belgelerinde ters proxy yönergeleri hakkında daha fazla bilgi edinin.
Ardından, proxy yapılan siteyi ters proxy üzerinden yüklenecek şekilde yapılandırmanız gerekir. Kinsta'nın proxy'li siteyi yapılandırmak için izlediği standart adımlar şunlardır:
- Proxy'li sitenin yüklendiği yolda bir alt dizin oluşturun. Tüm proxy web sitesinin dosyaları bu alt dizine taşınır.
- Yeni alt dizini, proxy'li site için kök dizini olarak tanımlamak için web sunucusunun yapılandırma dosyalarını güncelleyin. Ayrıca, gelen her istek için alt dizini istek URI'sinden kaldırmak için bir yeniden yazma kuralı eklemeniz gerekir.
- Canlı site URL'leriyle eşleşmesi için proxy'li sitenin veritabanındaki tüm URL'leri güncelleyin (örn.
example.com/blog
). - Proxy'li sitenin
wp-config.php
dosyasını$_SERVER['HTTP_HOST']
tanımıyla ana sitenin URL'sine işaret ederek düzenleyin. - Bir SSL sertifikası kullanıyorsanız, yeniden yönlendirme döngülerinden kaçınmak için
wp-config.php
dosyasında katı kurallar tanımlamanız gerekir.
Not: Proxy'li bir site, proxy'li sitenin yüklendiği aynı alt dizini çoğaltan URL'ler oluşturamaz. Örneğin, example.com/blog/blog
adresindeki proxy'li bir site example.com/blog
adresinde bir sayfa veya dizin oluşturamaz.
2. Yalnızca Sunucunuzda Barındırılan Proxy Site
Yalnızca proxy siteye ve web sunucusuna erişiminiz varsa, ana sitenin sunucu yöneticisiyle iletişime geçmeniz ve onlardan sizin için ters proxy kurallarını ayarlamasını istemeniz gerekir.
Siteleriniz için son derece hızlı, güvenli ve geliştirici dostu bir barındırmaya mı ihtiyacınız var? Kinsta, WordPress geliştiricileri düşünülerek oluşturulmuştur ve birçok araç ve güçlü bir gösterge panosu sağlar. Planlarımıza göz atın
Bunu yapmak için, yukarıda belirtilen adımları izlemelisiniz, ancak bu durumda kuralları iki farklı sunucuda yapılandırmanız gerekir.
Proxy sitenizi Kinsta ile barındırmak için siteye ters proxy'ye işaret edecek bir etki alanı ekleyin. Genellikle, alt etki alanı bu amaca uygundur (örn. blog.example.com
), proxy siteyi bir alt dizin bağlantısı üzerinden yüklemek için (örn. example.com/blog
).
Kinsta'da proxy'li sitenizi kurduktan sonra, proxy'li siteyi ters proxy üzerinden yüklenecek şekilde yapılandırmak için Kinsta destek ekibiyle iletişime geçebilirsiniz. Şu anda destek ekibimiz, kurulum sürecini ziyaretleri doğru sayacak şekilde tamamlamak için sunucunuzun gerçek IP'sine ihtiyaç duyacaktır. Belirli sağlayıcılardan (örneğin AWS CloudFront) gelen dinamik IP kısıtlamaları nedeniyle statik bir IP sağlayamıyorsanız, planınız bunun yerine karşılaştırılabilir bir bant genişliği tabanlı plana dönüştürülecektir.
Son olarak, sunucunuzda ters proxy kurmak, yalnızca sunucu yöneticisi ilgilenebileceğinden Kinsta desteğinin kapsamı dışındadır.
3. Yalnızca Sunucunuzda Barındırılan Ana Site
Yalnızca ana siteye ve web sunucusuna erişiminiz varsa, ters proxy kurmalı ve proxy siteyi harici bir ana bilgisayardan yüklemek için kurallarını yapılandırmalısınız. Proxy'li sitenin ters proxy üzerinden yüklenecek şekilde kurulması ve yapılandırılması, ikincil sunucunun yöneticisinin sorumluluğundadır.
Ana sitenizin Kinsta'da barındırılması, Kinsta'nın destek ekibine erişmenizi sağlayacaktır. Bu makalenin başlarında listelenen standart ters proxy kurallarını eklemek için onlarla bir destek bileti oluşturabilirsiniz. Gerekirse, bu kurallara herhangi bir ek özelleştirme de ekleyebilirsiniz.
Bu senaryoda, proxy yapılan siteyi ters proxy üzerinden düzgün şekilde yükleyecek şekilde yapılandırmaktan tamamen siz sorumlusunuz.
Nginx'i Ters Proxy Olarak Ayarlama
Kinsta web sitenizi barındırmıyorsa ve sunucularınızı siz yönetiyorsanız, ters proxy'yi kendiniz ayarlamanız ve proxy'li siteyi işaret edecek şekilde yapılandırmanız gerekir.
Web sunucunuzun işletim sistemine bağlı olarak Nginx'i farklı şekilde kurabilirsiniz. Linux dağıtımları için, Linux dağıtımınızın sürümüne göre çeşitli Nginx paketleri kullanabilirsiniz.
Aşağıdaki örnekte, birincil siteyi example.com
alan adına yükledik, proxy'li WordPress sitesi ise blog.domain.com
alt alanına yüklendi. Her ikisi de Ubuntu 18.04 üzerinde çalışan bir web sunucusunda Apache tarafından desteklenmektedir. Nginx'i ana sunucuya bir ters proxy olarak yükleyip yapılandıracağız.
Başlamak için sunucunuzun terminaline SSH üzerinden erişin. Ardından dağıtımınızın paket listesini güncellemek için apt-get
komutunu kullanın ve Nginx'i web sunucunuza yükleyin.
sudo apt update sudo apt install nginx
Ardından, Nginx'i Apache'de barındırılan etki alanları için proxy isteklerine yapılandırmanız gerekir. Bunu yapmak için yeni bir sanal ana bilgisayar dosyası oluşturun. Burada, kodu eklemek için nano düzenleyiciyi kullanıyorum, ancak istediğiniz herhangi bir kod düzenleyiciyi kullanabilirsiniz.
sudo nano /etc/nginx/sites-available/example.com.conf
Ardından, aşağıdaki server {...}
ve location
bloklarını ekleyerek istekleri Apache'ye iletmek için Nginx yönergelerini ayarlayın:
server { listen 80; server_name example.com www.example.com; index index.php; root /var/www/example.com/public # fallback for index.php location / { try_files $uri $uri/ /index.php?$query_string; }location /blog { proxy_pass http://blog.domain.com;proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; # Proxy headers 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 timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }
Yukarıdaki kodda, Apache sunucusu tarafından sunulacak bir example.com/blog
alt dizini bağlantısı tanımlıyorum. proxy_pass
yönergesinde proxy web sitenizin genel IP adresini (veya URL'sini) kullandığınızdan emin olun. Benim durumumda, proxy web blog.domain.com
alt etki alanında barındırılıyor.
Not: Herhangi bir değişiklik yapmadan önce proxy web sitesinin kurulu olduğundan ve hizmete hazır olduğundan emin olun.
Burada kullanılan tüm ters proxy yönergeleri hakkında daha fazla bilgiyi Nginx'in ayrıntılı yönerge dizininde bulabilirsiniz.
Sanal ana bilgisayar dosyasını kaydedin. Ardından, hem /etc/nginx/sites-available
hem de /etc/nginx/sites-enabled
dizinlerinde example.com.conf
adlı dosyalar için bir sembolik bağlantı oluşturarak yeni sanal ana bilgisayarı etkinleştirin.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Bundan sonra, herhangi bir yapılandırma hatası için Nginx'i test edin.
sudo nginx -t
Hata yoksa, değişiklikleri uygulamak için Nginx'i yeniden yükleyin.
sudo systemctl reload nginx
Nginx'i şimdi ters proxy olarak çalışacak şekilde başarıyla ayarladınız. Bunu doğrulamak için, proxy sitenizi ziyaret ettiğinizde yüklenen PHP değişkenlerini kontrol etmek için phpinfo() işlevini kullanabilirsiniz.
SERVER_SOFTWARE
ve DOCUMENT_ROOT
PHP değişkenleri altında, Apache'nin bu etki alanını arka uçta sunduğunu göreceksiniz. Ancak HTTP_X_REAL_IP
ve HTTP_X_FORWARDED_FOR
PHP değişkenleri, istekleri iletmek için Nginx'in ters proxy olarak kullanıldığını doğrular.
fastcgi_cache ve ngx_cache_purge modüllerini kullanarak WordPress sitenizin Nginx üzerinden sunumunu hızlandırabilirsiniz. İlk modül sitenizi önbelleğe alırken, ikinci modül belirli olaylara (örneğin bir WordPress gönderisini/sayfasını yayınlama veya düzenleme) dayalı olarak önbelleği otomatik olarak temizler.
Nginx'in proxy sunucu önbelleğini doğrudan WordPress yönetici panonuzdan kontrol etmek için Nginx Önbellek Denetleyicisi WordPress eklentisini kullanabilirsiniz. Bir WordPress Multisite kurulumu kullanıyorsanız, aynısını yapmak için Nginx Helper eklentisini kullanabilirsiniz.
Nginx ve WordPress ile nasıl çalışılacağına dair ayrıntılı bir genel bakış için Nginx'in ana belgelerine ve Nginx WordPress kurulum kılavuzuna göz atın.
Apache Ters Proxy Olarak Nasıl Kurulur
Başlamadan önce, example.com
ve blog.domain.com
olmak üzere iki web sitenizin çalışır durumda ve çalışır durumda olduğundan emin olun. İlk web sitesi bir WordPress sitesi olabilir veya olmayabilir, ancak ikincisi, esas olarak example.com/blog
alt dizini bağlantısındaki kök etki alanının blogunu yüklemek için kullanıldığı için bir WordPress sitesi olmalıdır.
Sunucunuzun terminalini SSH aracılığıyla açarak ve Apache'nin proxy modülünü etkinleştirerek Apache'yi yapılandırmaya başlayın.
sudo a2enmod proxy proxy_http ssl
Yukarıdaki komutu çalıştırmak, yeni tanımlanan yönergeleri yeniden yüklemek için büyük olasılıkla Apache'yi yeniden başlatacaktır.
Ardından, bir ters proxy oluşturmak için ana sunucunuzun sanal ana bilgisayar dosyasını düzenleyin. İşte eklemeniz gereken kod:
<VirtualHost *> DocumentRoot /var/www/app/public SSLProxyEngine On ProxyRequests off ProxyPass /blog http://blog.domain.com ProxyPassReverse /blog http://blog.domain.com </VirtualHost>
ProxyPass yönergesi belirtilen yollar için bir ters proxy oluştururken, ProxyPassReverse yönergesi bu ters proxy aracılığıyla gönderilen HTTP yanıt başlıklarını yakalayacak ve bunları Apache sunucusuyla eşleşecek şekilde yeniden yazacaktır.
Dosyayı kaydettikten sonra, düzenlemeyi bırakmanızı isteyen satırın hemen önüne aşağıdaki kodu ekleyerek wp-config.php
dosyanızı düzenlemeniz gerekir.
# ProxyPass Settings # overrides the variables below to ensure that any # request to /blog/* subdirectory is taken care of properly $_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI']; $_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME']; $_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];
Son olarak, /blog
alt dizini bağlantısının yapılandırma değerlerini eklemek için WordPress sitenizin veritabanını güncellemeniz gerekir. Bunu aşağıdaki SQL sorgusunu çalıştırarak yapabilirsiniz:
UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );
Artık https://www.example.com/blog
URL'sini ziyaret edebilmeli ve WordPress sitenizin http://blog.domain.com
alt etki alanında barındırılmasını URL'sini değiştirmeden yükleyebilmelisiniz. Sitenize göz atmak, yazmak, düzenlemek ve yönetmek için WordPress'i her zamanki gibi kullanmaya devam edebilirsiniz.
Ters Proxy'nin Sınırlamaları
- Ters proxy, içinden geçen tüm trafiği okuyup değiştirebildiği için önemli bir güvenlik riski oluşturur. HTTPS trafiğini ters proxy üzerinden geçiriyorsanız, geçen verilerin şifresini çözmesi ve yeniden şifrelemesi gerekir. Bu, SSL/TLS sertifikasının özel anahtarlarına sahip olması gerektiği anlamına gelir. Bu nedenle, herhangi bir kötü niyetli taraf ters proxy'nizi tehlikeye atabilirse, parolaları günlüğe kaydedebilir ve web sitelerinize kötü amaçlı yazılım enjekte edebilir.
- Siz veya kullanıcılarınız ana sunucunuza doğrudan erişemiyorsanız, ters proxy kullanmak tek bir hata noktasına yol açabilir. Örneğin, birden fazla alana hizmet vermek için ön olarak bir ters proxy kullanıyorsanız, bunun kesintisi tüm alanların aynı anda çevrimdışı olmasına neden olabilir.
- Üçüncü taraf bir ters proxy'ye (örneğin Cloudflare) güveniyorsanız, sitenizin hassas bilgilerini onlara teslim ediyorsunuz. Güvenilir olmalarına rağmen, neye yol açabileceğini tahmin edemezsiniz.
- Yedekleri geri yüklemek veya bir ters proxy üzerinden yüklenen web sitelerinde canlı hazırlama sitelerini zorlamak, proxy'li sitenin düzgün şekilde yüklenmesini durdurmasına neden olabilir.
CDN ve Ters Proxy Arasında Seçim Yapma
CDN'ler, çoğu yapılandırma ve bakımın bir üçüncü tarafça halledildiği gelişmiş bir ters proxy biçimidir. Sizin tarafınızdan küçük bir çabayla WordPress sitenize inanılmaz performans avantajları sağlayabilirler.
CDN'ler içeriği önbelleğe alıp hızlı bir şekilde kullanıcılara sunmakla kalmaz, aynı zamanda kaynak sunucularınızdaki yükü azaltır, bant genişliği maliyetlerini düşürür, ek bir güvenlik katmanı sağlar, sitenizin SEO'sunu artırır ve web sitenizi daha iyi ölçeklendirmenize yardımcı olur.
CDN'ler tarafından sağlanan faydaların çoğunun, ters proxy'ler tarafından sağlananlarla aynı olduğunu fark edeceksiniz. Öyleyse, bir ters proxy üzerinden bir CDN mi seçmelisiniz, yoksa tam tersi mi?
Sadece bir tanesiyle yetinmeniz için hiçbir neden yok. Halihazırda kurulu bir ters proxy'niz varsa, bir CDN kullanarak hız ve performans kazanımları görmeye devam edeceksiniz. Her ikisinin de önbellekleri iyi bir katman oluşturur ve benzersiz istek işleme ihtiyaçlarınız varsa (örneğin dinamik içerik, e-ticaret), CDN veya ters proxy tarafından iletilen bazı özel başlıklarla kolayca yapılandırabilirsiniz.
Özet
WordPress oldukça esnektir. Bunu bir blog, e-ticaret sitesi ve hatta Öğrenim Yönetim Sistemi olarak kullanabilirsiniz. Çoğu durumda, WordPress'i benzersiz gereksinimlerinize uyacak şekilde özelleştirebilirsiniz.
Ancak bazen ek bir siteyi barındırmak için ayrı bir etki alanı veya ikincil bir sunucu kullanmanız gerekebilir. Daha önce tartışıldığı gibi, bunun nedeni büyük bir kurumsal site için farklı teknoloji yığınları kullanmak veya önceden var olan WordPress olmayan bir site için bir WordPress blogu başlatmak olabilir.
A reverse proxy can help in both these cases, helping you get the most out of WordPress without giving up the main website and starting over.