やりたいこと
railsで作ったアプリを unicorn + nginx + mysql でAWSにデプロイしたい
起きている問題
telnetコマンドで80ポートに接続できない
↓
telnetコマンドで80ポートに接続できたものの、EC2インスタンス上でcurlコマンドを使ってlocalhost/静的なページに接続しても
「ページが見つからない」となってしまう。(詳細ログは下記)
原因を探った流れ
EC2インスタンスのパブリックIPをコピペして開こうとしても開けず、以下の手順で原因を探った。
nslookupで名前解決できているか→ 出来てる
pingコマンドが通るか→ 通る
telnetコマンドで80ポートに接続できるか
↓
tanaberyouni@tanaberyouninoMacBook-Air ~ % telnet 35.72.xxx.x(IPアドレス) 80 Trying 35.72.xxx.x... telnet: connect to address 35.72.xxx.x: Connection refused telnet: Unable to connect to remote host
となり、ファイアウォールの問題?と、思いセキュリティグループを確認しましたが、原因を見つけられず。。
↓
nginxの再起動で接続できた。
tanaberyouni@tanaberyouninoMacBook-Air ~ % telnet 35.72.xxx.x 80 Trying 35.72.xxx.x... Connected to ec2-35-72-xxx-x.ap-northeast-1.compute.amazonaws.com. Escape character is '^]'. ^CConnection closed by foreign host.
EC2インスタンス上からcurlコマンドでlocalhostに接続
[ryoji@ip-10-0-0-225 tempo]$ curl http://localhost/ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Welcome to Amazon Linux 2</title> <style rel="stylesheet" type="text/css"> html { background-color: white; font-family: "DejaVu Sans", "Liberation Sans", sans-serif; margin: 10% 20%; } body { margin:0; padding:0; background: white; } a { color: #007eb9; } </style> </head> <body> <p>Thank you for using <a href="https://aws.amazon.com/amazon-linux-2/">Amazon Linux 2</a>.<p> <p>Now that you have it installed, find announcements and discussion in <a href="https://forums.aws.amazon.com/forum.jspa?forumID=228">the AWS Discussion Forums</a>. Also try <a href="https://aws.amazon.com/documentation/">AWS documentation</a>.</p> </body> </html>
同様に localhost/静的なページ に接続
[ryoji@ip-10-0-0-225 tempo]$ curl http://localhost/owners/new <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>The page is not found</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> /*<![CDATA[*/ body { background-color: #fff; color: #000; font-size: 0.9em; font-family: sans-serif,helvetica; margin: 0; padding: 0; } :link { color: #c00; } :visited { color: #c00; } a:hover { color: #f50; } h1 { text-align: center; margin: 0; padding: 0.6em 2em 0.4em; background-color: #294172; color: #fff; font-weight: normal; font-size: 1.75em; border-bottom: 2px solid #000; } h1 strong { font-weight: bold; font-size: 1.5em; } h2 { text-align: center; background-color: #3C6EB4; font-size: 1.1em; font-weight: bold; color: #fff; margin: 0; padding: 0.5em; border-bottom: 2px solid #294172; } h3 { text-align: center; background-color: #ff0000; padding: 0.5em; color: #fff; } hr { display: none; } .content { padding: 1em 5em; } .alert { border: 2px solid #000; } img { border: 2px solid #fff; padding: 2px; margin: 2px; } a:hover img { border: 2px solid #294172; } .logos { margin: 1em; text-align: center; } /*]]>*/ </style> </head> <body> <h1><strong>nginx error!</strong></h1> <div class="content"> <h3>The page you are looking for is not found.</h3> <div class="alert"> <h2>Website Administrator</h2> <div class="content"> <p>Something has triggered missing webpage on your website. This is the default 404 error page for <strong>nginx</strong> that is distributed with Fedora. It is located <tt>/usr/share/nginx/html/404.html</tt></p> <p>You should customize this error page for your own site or edit the <tt>error_page</tt> directive in the <strong>nginx</strong> configuration file <tt>/etc/nginx/nginx.conf</tt>.</p> </div> </div> <div class="logos"> <a href="http://nginx.net/"><img src="/nginx-logo.png" alt="[ Powered by nginx ]" width="121" height="32" /></a> <a href="http://fedoraproject.org/"><img src="/poweredby.png" alt="[ Powered by Fedora ]" width="88" height="31" /></a> </div> </div> </body> </html>
となり、nginxエラー?
nginxのアクセスログをいったん見にいく
nginx/access.log
1127.0.0.1 - - [10/May/2021:08:27:24 +0000] "GET / HTTP/1.1" 200 732 "-" "curl/7.61.1" "-" 2127.0.0.1 - - [10/May/2021:08:27:44 +0000] "GET /owners/new HTTP/1.1" 404 3650 "-" "curl/7.61.1" "-"
nginxの設定
# log directory error_log /var/www/rails/tempo/log/nginx.error.log; access_log /var/www/rails/tempo/log/nginx.access.log; # max body size client_max_body_size 2G; upstream app_server { # for UNIX domain socket setups server unix:/var/www/rails/tempo/tmp/sockets/.unicorn.sock fail_timeout=0; } server { listen 80; server_name 35.72.137.3; # nginx so increasing this is generally safe... keepalive_timeout 5; # path for static files root /var/www/rails/tempo/public; # page cache loading try_files $uri/index.html $uri.html $uri @app; location @app { # HTTP headers proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } # Rails error pages error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/rails/tempo/public; } }
EC2インスタンスのセキュリティグループ
インバウンド
ポート範囲 プロトコル ソース セキュリティグループ
80 TCP 0.0.0.0/0 tempo_SecurityGroup
22 TCP 0.0.0.0/0 tempo_SecurityGroup
443 TCP 0.0.0.0/0 tempo_SecurityGroup
-1 ICMP 0.0.0.0/0 tempo_SecurityGroup
アウトバウンド
ポート範囲 プロトコル 送信先 セキュリティグループ
80 TCP 0.0.0.0/0 tempo_SecurityGroup
22 TCP 0.0.0.0/0 tempo_SecurityGroup
443 TCP 0.0.0.0/0 tempo_SecurityGroup
-1 ICMP 0.0.0.0/0 tempo_SecurityGroup
サブネットのACL
初期状態からいじった記憶はないのですが
インバウンド
ルール番号 タイプ プロトコル ポート範囲 送信元 許可/拒否
100 すべてのトラフィック すべて すべて 0.0.0.0/0 Allow
アウトバウンド
ルール番号 タイプ プロトコル ポート範囲 送信先 許可/拒否
100 すべてのトラフィック すべて すべて 0.0.0.0/0 Allow
unicornの確認
[ryoji@ip-10-0-0-225 ~]$ ps -ef | grep unicorn | grep -v grep ryoji 2562 1 19 02:53 ? 00:00:01 unicorn_rails master -c /var/www/rails/tempo/config/unicorn.conf.rb -D -E production ryoji 2569 2562 0 02:53 ? 00:00:00 unicorn_rails worker[0] -c /var/www/rails/tempo/config/unicorn.conf.rb -D -E production ryoji 2571 2562 0 02:53 ? 00:00:00 unicorn_rails worker[1] -c /var/www/rails/tempo/config/unicorn.
nginxの確認
[ryoji@ip-10-0-0-225 ~]$ ps ax | grep nginx 2526 ? Ss 0:00 nginx: master process /usr/sbin/nginx 3347 ? S 0:00 nginx: worker process 3348 ? S 0:00 nginx: worker process 3369 pts/0 S+ 0:00 grep --color=auto nginx
何が原因なのかよく分かりません。
お分かりになる方いらっしゃいましたら、ご教授ください。
回答2件
あなたの回答
tips
プレビュー