Sayı

9

Ben ben yapılandırıldığı Tomcat sunucusu üzerinde çalışan benim uygulama var arka uç HTTPS'de denge son kullanıcıların isteklerini yüklemek için yapılandırılmış bir ELB (Amazon Elastik Yük Dengeleyici), HTTP'de.Sayı

Son kullanıcılarım uygulama için bir istekte bulunduğunda, istek ELT'ye eriştikleri için, istek HTTPS'de olacak, şimdi, ELB dahili olarak HTTP'de tomcat sunucusuna yönlendiriyor. Tomcat'ta uygulamam, Spring Security aracılığıyla korunur ve istek korumalı bir kaynak için ise ve kullanıcı oturum açmamışsa kullanıcı yapılandırılmış giriş sayfasına yönlendirilir. Şimdi, son kullanıcı için bu yeniden yönlendirme HTTP üzerinden olacaktır, çünkü tomcat sunucusu, istekleri ilk olarak ELB'den HTTP olarak almıştı. Bu, HTTP üzerinde içe dönük trafik için yapılandırmamış olduğumdan, artık bir 404'e yol açacaktır.

Bu sorunu nasıl çözeriz? HTTPS'yi hem son kullanıcı-ELB'de hem de ELB-tomcat'ten almanın tek yolu var mı?

cevap

9

ELB istemci senin yük dengeleyici bağlanmak için kullanılan hangi protokol söyleme olanağı sağlayan X-Forwarded-Proto başlığını ayarlar. documentation'a bakın.

Sen, bu başlığın bakmak örneğin this answer görmek için bahar güvenliğini yapılandırabilir.

+1

Teşekkürler Çok .. Sorunumu çözdüm .. –

0

İnternette bunu bulmakta zor bir zaman geçirdim ve sonunda bunu yapmanın bir yolunu buldum.

sorun en kısa sürede http ELB üzerinde portuna https yönlendirildi olarak içten böylelikle bir döngü oluşturarak geri bağlantı noktası 80 yönlendirilmek için kullanılan olmasıydı. Bu, ELB'nin SSL'yi boşalttığı ve daha sonra yeniden bağlantı noktası 80'e bağlandığı için olur.

Son olarak, bazı araştırmalardan sonra, X-Forwarded-Proto'ü yönetmek için doğru bir yeniden yazma kuralı aldım. Böylece, ELB SSL'yi kaldırsa bile, tomcat, orijin isteğinin SSL kullandığını görecektir.

Bu Tomcat çok eski sürümlerinde yapılabilir emin 8. Am Tomcat Vanalar kullanılarak yapılır. Tomcat üzerinde valfleri kullanarak yeniden yazma kurallarını etkinleştirdim. Bundan sonra Apache'de yönlendirme kuralları yazmak kadar kolaydı.

: 1. Adım:

bir

İşte adımlardır. Tomcat conf klasörünün altındaki context.xml dosyasını açın. b. Aşağıdaki satırı aşağıdaki şekilde yapıştırın: Bu, vanayı küresel olarak etkinleştirecektir. Bu durumun ardından belirli konak için etkinleştirilmesi o Adım 2

bu özel etki alanı için server.xml iç yapıştırılması gerekir gerekir:

a. Conf/server.xml dosyasını açın b.

: a sadece </Host>

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 

Aşama 3 Aşağıdaki satırı yapıştırın. Web.xml dosyasının bulunduğu klasörü açın. Örneğin, uygulama ROOT altında barındırılıyorsa web.xml, webapps/ROOT/WEB-INF

b altında olacaktır. Benzer şekilde, uygulama, webapps/myappfolder altında barındırılıyorsa, web.xml, webapps/myappfolder/WEB-INF

c. WEB-INF klasöründe Yeni bir dosya oluştur rewrite.config. ve aşağıdaki yeniden düzenleme kuralını yapıştırın:

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]