質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

解決済

EC2+nginxでWebが表示されず、接続がタイムアウトします

query1000
query1000

総合スコア5

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

5回答

0評価

1クリップ

930閲覧

投稿2021/10/02 04:25

編集2021/10/03 06:32

事象

AWSにEC2サーバーをUbuntuで立て、SSHでアクセス出来ています。
nginxをインストールしましたが、ホスト名およびIPアドレスでアクセスするとタイムアウトになります。

$ curl localhost

では正しくnginxのサンプルindex.htmlが表示されますが、

$ curl www.example.com # 自分のホスト名

curl: (28) Failed to connect to xxx.xxx.xxx.xxx port 80: 接続がタイムアウトしました

および

$ curl www.example.com # EC2サーバーのElastic IPアドレス

curl: (28) Failed to connect to xxx.xxx.xxx.xxx port 80: 接続がタイムアウトしました

となる状態で、ブラウザーからアクセスしてもタイムアウトになります。
正しくWebページを表示させるにはどうすればいいでしょうか。

環境

OSはUbuntuです。

$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.3 LTS (Focal Fossa)" (以下略)

nginxは1.20.1です。

$ nginx -V nginx version: nginx/1.20.1 built by gcc 9.3.0 (Ubuntu 9.3.0-10ubuntu2) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled (以下略)

設定

nginx.conf

インストール時のままです。
(空行と注釈を削っています)

$ cat /etc/nginx/nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }

conf.d/default.conf

サーバー名を追加しました。

$ cat /etc/nginx/conf.d/default.conf server { listen 80; #server_name localhost; # ここに自分のホスト名を書きました server_name www.example.com; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }

試したこと

curl localhostできていますので、nginxは動いていると思います。

$ curl localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

プロセスの起動も確認しました。

$ ps ax | grep nginx 11435 ? Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 11437 ? S 0:00 nginx: worker process 11495 pts/1 S+ 0:00 grep --color=auto nginx

ポートの状態は以下の通りです。

$ ss -natu | grep LISTEN | grep 80 tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*

しかし、curl 自分のホスト名とすると、接続がタイムアウトします。

$ curl www.example.com curl: (28) Failed to connect to login.tododone.biz port 80: 接続がタイムアウトしました

ブラウザーで同じホスト名にアクセスしても「接続がタイムアウトしました」と言われます。

自分のホスト名の名前解決は出来ています。

$ dig www.example.com ; <<>> DiG 9.16.1-Ubuntu <<>> www.example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60139 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;www.example.com. IN A ;; ANSWER SECTION: www.example.com. 108 IN A xxx.xxx.xxx.xxx # 実際にはEC2のElastic IPが入っています ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: 土 10月 02 12:53:35 JST 2021 ;; MSG SIZE rcvd: 63

IP直打ちでcurlしても結果は同じでした。

$ curl xxx.xxx.xxx.xxx curl: (28) Failed to connect to xxx.xxx.xxx.xxx port 80: 接続がタイムアウトしました

アクセスログを確認しましたが、localhost からのアクセスしか記録されていませんでした。

$ cat /var/log/nginx/access.log 127.0.0.1 - - [02/Oct/2021:11:22:51 +0900] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.68.0" "-" 127.0.0.1 - - [02/Oct/2021:12:01:11 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0" "-" 127.0.0.1 - - [02/Oct/2021:12:06:58 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0" "-" 127.0.0.1 - - [02/Oct/2021:12:11:16 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0" "-" 127.0.0.1 - - [02/Oct/2021:12:23:00 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0" "-" 127.0.0.1 - - [02/Oct/2021:12:33:01 +0900] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0" "-"

補足情報

AWSのEC2 > セキュリティグループから、以下のエントリーを追加しています。
SSHにはアクセス出来ています。

(セキュリティグループ名) IPv4 SSH TCP 22 0.0.0.0/0 (セキュリティグループ名) IPv4 HTTP TCP 80 0.0.0.0/0 (セキュリティグループ名) IPv4 HTTPS TCP 443 0.0.0.0/0 (セキュリティグループ名) IPv6 SSH TCP 22 ::0/0 (セキュリティグループ名) IPv6 HTTP TCP 80 ::0/0 (セキュリティグループ名) IPv6 HTTP TCP 443 ::0/0

ACLは設定していません。

追記

デフォルトのVPCを使っています。

デフォルトゲートウェイは以下のように設定されていました。
イメージ説明

また、ルートテーブルが以下のように設定されていました。
イメージ説明

VPC、サブネット、RTBの関係についてです、

まず、以下の位置に設定されたVPCについて
イメージ説明

サブネットが3つできていました。
イメージ説明

このVPCと、ルートテーブルが以下のように設定されていました。
イメージ説明

サブネットとルートテーブルの関連付けについては以下の通りです。
イメージ説明

どうか、よろしくおねがいします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

mike2mike4

2021/10/02 04:56

IGWを設定してないとか?
query1000

2021/10/02 05:04

ありがとうございます。 デフォルトのVPCを使用していますが、インターネットゲートウェイはすでに作られていて、アタッチされていました。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。