Ruby 2.5.1 Rails 5.2.4.3
Ich habe die Bereitstellung für AWS abgeschlossen, indem ich auf den Artikel hier verwiesen habe. Als ich jedoch über einen Browser darauf zugegriffen habe, ist die Meldung "Keine Verbindung zu dieser Site möglich" fehlgeschlagen. Ich werde ...
(Hinweis) Der Artikel, auf den ich mich bezog, ist sehr leicht zu verstehen und nicht die Schuld des Artikels.
Lassen Sie uns das Protokoll überprüfen, das sich auf den Artikel bezieht, um festzustellen, was falsch ist.
Serverumgebung(/var/www/rails/App Name/)
cd log
tail -n 30 production.log
Aus irgendeinem Grund kann ich im Protokoll keinen Fehler finden. Anfangs machte es keinen Sinn, aber nach einer Weile dachte ich, dass es möglicherweise nicht über den Browser zugänglich ist.
Also werde ich versuchen, mit curl direkt auf http zuzugreifen.
$ curl -IXGET http://IP Adresse/
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.2
Date: Sat, 27 Jun 2020 05:09:57 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Location: https://IP Adresse/
301 wird zurückgegeben. Anscheinend wurde der Zugriff auf http ohne Erlaubnis auf https umgeleitet. Ich habe es gewagt, mit Curl auf https zuzugreifen.
$ curl -IXGET https://IP Adresse/
curl: (7)Verbindung zum IP-Adressport 443 fehlgeschlagen: Connection refused
Ich war wütend, dass 433 Ports nicht verfügbar waren. Sicherlich hat die Sicherheitsgruppe 433 nicht festgelegt, daher ist dies natürlich.
Also habe ich 433 zu den eingehenden Regeln der Sicherheitsgruppe hinzugefügt, und als ich über http über einen Browser darauf zugegriffen habe, wurde die Seite mit https! (Beeindruckend)
Das ursprüngliche Ziel ist es jedoch, es mit http anstelle von https zu öffnen ...
Die Ursache für die Umleitung von http nach https war die folgende Beschreibung in /config/environments/production.rb.
/config/environments/production.rb
config.force_ssl = true
Es scheint, dass dies geschrieben wurde, als es in der Heroku-Bereitstellung vor ... Damit scheint es für die SSL-Konvertierung zu https umzuleiten.
Sie können es also lokal reparieren, aber es ist mühsam, es zu pushen oder zu klonen. Schreiben Sie daher vorerst die Beschreibung auf dem Server neu und überprüfen Sie sie einfach.
$ cd /var/www/rails/Ticket-Rec/config/environments/
$ vi production.rb
Geändert wie folgt
/config/environments/production.rb
config.force_ssl = false
Starten Sie das Einhorn neu
$ ps -ef | grep unicorn | grep -v grep
hiroki 2031 1 0 26. Juni? 00:00:02 unicorn_rails master -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production
hiroki 2036 2031 0 26. Juni? 00:00:00 unicorn_rails worker[0] -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production
hiroki 2038 2031 0 26. Juni? 00:00:00 unicorn_rails worker[1] -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production
$ kill 2031
$ bundle exec unicorn_rails -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production
Starten Sie nginx neu
$ sudo service nginx restart
Als ich wieder mit Curl auf http zugegriffen habe, wurden 200 zurückgegeben!
$ curl -IXGET http://IP Adresse/
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Sat, 27 Jun 2020 05:27:46 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
ETag: W/"03411acbf679047381b99fd0eda2307c"
Cache-Control: max-age=0, private, must-revalidate
Set-Cookie: _myapp_session=%2Fj%2FMy4fzeeSRY3imIh%2FCkJg94SzoshjfdaYZhZcEzF4i%2BxXXUZiYY8M%2Flre%2F6TAAvXqfyrr5sJ8ke2aOlhh4o8i6xsMfO7Ubp7LvUQnAxB9gm%2FbQ8Gc%2BLPzZAxcL9OgDLvQaocLN1MTSz6XKaDM%3D--1h9%2FJNHiHiktaWNU--CJuK9RUucx3dkTVkQpjYLg%3D%3D; path=/; HttpOnly
X-Request-Id: 9d2ee01e-fa05-40ae-8959-6e9b40f9b3e1
X-Runtime: 0.005877
Öffnen Sie es tatsächlich im Browser
Browser
http://IP Adresse/
Ich konnte sicher auf die App zugreifen! Herzliche Glückwünsche!
Wenn Sie es jedoch danach ssl machen, schließlich
/config/environments/production.rb
config.force_ssl = true
Es scheint auf lol eingestellt zu sein
Ich fand jedoch den Grund heraus, warum es nicht verbunden war.
Recommended Posts