Ruby 2.5.1 Rails 5.2.4.3
J'ai terminé le processus de déploiement sur AWS en me référant à l'article ici, mais lorsque j'y ai accédé depuis un navigateur, il a échoué avec «Impossible de se connecter à ce site». Je vais ...
(Note) L'article auquel j'ai fait référence est très facile à comprendre et n'est pas la faute de l'article.
Vérifions le journal faisant référence à l'article pour voir ce qui ne va pas.
Environnement serveur(/var/www/rails/nom de l'application/)
cd log
tail -n 30 production.log
Pour une raison quelconque, je ne trouve rien comme une erreur dans le journal. Cela n'avait pas de sens au début, mais après un certain temps, j'ai pensé qu'il pourrait ne pas être accessible depuis le navigateur.
Je vais donc essayer d'accéder directement à http en utilisant curl.
$ curl -IXGET http://adresse IP/
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://adresse IP/
301 est renvoyé. Apparemment, l'accès à http a été redirigé vers https sans autorisation. J'ai osé accéder à https avec curl.
$ curl -IXGET https://adresse IP/
curl: (7)Échec de la connexion au port d'adresse IP 443: Connection refused
J'étais en colère que 433 ports ne soient pas disponibles. Certes, le groupe de sécurité n'a pas défini 433, c'est donc naturel.
J'ai donc ajouté 433 à la règle entrante du groupe de sécurité, et lorsque j'y ai accédé depuis un navigateur via http, la page s'est ouverte avec https! (Impressionnant)
Cependant, l'objectif initial est maintenant de l'ouvrir avec http au lieu de https ...
La cause de la redirection de http vers https était la description suivante dans /config/environments/production.rb.
/config/environments/production.rb
config.force_ssl = true
Il semble que cela ait été écrit lors de sa conversion en SSL dans le déploiement heroku avant ... Avec cela, il semble rediriger vers https pour la conversion SSL.
Vous pouvez donc le réparer localement, mais il est difficile de pousser ou de cloner, donc pour le moment, réécrivez la description dans le serveur et vérifiez-la.
$ cd /var/www/rails/Ticket-Rec/config/environments/
$ vi production.rb
Modifié comme suit
/config/environments/production.rb
config.force_ssl = false
Redémarrer la licorne
$ ps -ef | grep unicorn | grep -v grep
hiroki 2031 1 0 26 juin? 00:00:02 unicorn_rails master -c /var/www/rails/Ticket-Rec/config/unicorn.conf.rb -D -E production
hiroki 2036 2031 0 26 juin? 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 juin? 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
Redémarrez nginx
$ sudo service nginx restart
Quand j'ai à nouveau accédé à http avec curl, 200 étaient retournés!
$ curl -IXGET http://adresse IP/
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
En fait, ouvrez-le dans le navigateur
navigateur
http://adresse IP/
J'ai pu accéder à l'application en toute sécurité! Toutes nos félicitations!
Cependant, si vous le faites après cela, après tout
/config/environments/production.rb
config.force_ssl = true
Il semble être réglé sur lol
Cependant, j'ai découvert la raison pour laquelle il n'était pas connecté.
Recommended Posts