1

Ich bin eine Rails-App auf elastischen Bohnenstange, mein Problem ist, dass ich nicht den Load Balancer Health Check verwenden kann, wie es über http, nicht HTTPS überprüft. Ich habe config.force_ssl auf true eingestellt und möchte es nicht wirklich ändern, da dies bedeutet, dass ich 100% SSL-Abdeckung, HSTS und sichere Cookies habe. Ich habe einen Controller eingerichtet, um zu überprüfen,/Gesundheit und kann dies über curl zugreifen. Es scheint einen Widerspruch zwischen dem, was in Elastic Beanstalk gezeigt wird (EC2 Instance Health Check), wo ich nur den Pfad und einige Zeitpunkte ändern kann, und dem Health Check im Load Balancer in EC2 zu geben, wo ich das Ping-Protokoll ändern kann , Port und Pfad zu dem, was ich will, aber dies scheint keinen anderen Effekt zu haben, als einen 503 Fehler zu verursachen.Schienen auf elastischer Bohnenstange, kann keinen Load Balancer Health Check

Ping Protocol: https 
Ping Port: 443 
Ping Path: /health 

Der Lastausgleicher weist Anschlüsse 80 und 443 offen, aber umleitet 80-443 aufgrund force_ssl.

Kennt jemand die richtigen Einstellungen um dies zu umgehen, wie ich die Anwendung ohne es nicht skalieren kann?

Danke

Eamon

Antwort

2

Die Art und Weise, dies zu tun, ist dies, wie diese Ihre Konfiguration hinzuzufügen.

config.force_ssl 
config.ssl_options = { redirect: { exclude: -> request { request.path =~ /health/ } } } 

Dies ist gemäß den Schienen docs und gilt für Rails 5:

http://api.rubyonrails.org/classes/ActionDispatch/SSL.html

+0

Gute Antwort. Warum nicht als akzeptiert markieren? – ferdynator

+0

Ich wusste nicht, dass ich meine eigene Antwort akzeptieren könnte. Danke – etphoneshome

+0

Könnten Sie ein bisschen mehr @etphoneshome erarbeiten? Muss ich eine Datei in "public" legen, die auf "myurl.com/health" geschaltet wird? – Mosselman

0

Wenn, wie ich Sie Ihnen dies nicht Schienen 5, die andere Art und Weise mit tun kann, ist, Deaktivieren Sie "Force SSL" und verwenden Sie NGINX, um den gesamten Traffic auf https zu erzwingen ... Sie können dafür eine Ebextension-Datei verwenden. Die genaue Version kommt von AWS Direct benötigen:

https://github.com/awslabs/elastic-beanstalk-docs/blob/master/.ebextensions/aws_provided/security%20configuration/https-redirect-ruby-puma.config

Wenn Sie mehr Informationen über ebextensions benötigen, können Sie sie in der Dokumentation http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

1

Kleiner Tipp für die akzeptierte Antwort:

Falls Sie haben von Rails aktualisiert 4 bis Rails 5 und haben daher eine new_frameworks_default.rb in Ihrem initializers Verzeichnis. Sie müssen (oder out-Kommentar) die folgende Zeile entfernen:

Rails.application.config.ssl_options = { hsts: { subdomains: true } } 

Andernfalls wird ssl_options bereits festgelegt.

Verwandte Themen