2 apache sunucusunun önünde loadbalancer olarak yapılandırılmış bir apache (2.4) sunucusu kullanıyorum. Loadbalancer ve arka uçlar arasında http bağlantıları kullandığım zaman işe yarar, ancak https kullanmak işe yaramaz. Loadbalancer yapılandırması:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Arka uçlar şimdilik yalnızca kendinden imzalı sertifikalara sahiptir, bu nedenle sertifika doğrulamanın devre dışı bırakılması.
Loadbalancer'daki hata günlüğü aşağıdakileri içerir:
[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()
Tarayıcıdaki hata sayfası şunları içerir:
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
Yukarıda da belirttiğim gibi, yapılandırmayı http protokolüne değiştirmek ve port 80 çalışıyor. Ayrıca, istemci ile loadbalancer arasındaki bağlantıyı da https ile bağlar, böylece loadbalancer'ın ssl modülü düzgün şekilde kuruluyormuş gibi görünür. Https üzerinden doğrudan arka uca bağlanmak da herhangi bir hata vermez.
Zaman ayırdığınız için şimdiden teşekkür ederiz
Düzenleme: Anladım ki, sorun ortak sertifikalarımın sunucu adıyla eşleşmemesidir. SSLProxyVerify'nin hiçbirinin bu uyumsuzluğun göz ardı edilmesine neden olacağını düşünmemiştim , ancak yok. Apache 2.4.5'ten önce bu kontrol SSLProxyCheckPeerCN kapalı kullanılarak devre dışı bırakılabilir, ancak daha yüksek sürümlerde (2.4.7 kullanıyorum) SSLProxyCheckPeerName off seçeneğinin de belirtilmesi gerekir.
Sslproxycheckpeername için Apache belgeleri
Çalışma konfigürasyonu şöyle görünür:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
<Proxy balancer://testcluster>
BalancerMember https://[backend1]:443/test
BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Maalesef, itibarsızlık nedeniyle kendi soruma cevap veremiyorum bu yüzden sorumu düzelttim, umarım bu benzer bir sorunla karşılaşan birine yardımcı olur