Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
EC2 インスタンスでホストされているウェブサイトに接続できない理由を教えてください。
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでホストしている公開ウェブサイトに接続できません。
簡単な説明
ウェブサイトにアクセスできない問題を解決するには、EC2 インスタンスのウェブサイト設定が正しく設定されていることを確認してください。インスタンスのウェブサーバーに設定ミスがある場合、そのインスタンスでホストされているすべてのウェブサイトへのアクセスがブロックされます。
解決策
インスタンスが実行中であり、両方のステータスチェックに合格していることを確認する
Amazon EC2 コンソールを確認し、インスタンスが実行されているかどうかを検証します。ステータスチェックに関する問題のトラブルシューティング方法については、「EC2 Linux インスタンスに到達できず、ステータスチェックに合格できない理由を知りたいです」を参照してください。
さらに、インスタンスコンソールの出力とインスタンスのスクリーンショットを参照し、インスタンスが正しく起動しているかどうかを確認します。
インスタンスのセキュリティグループとネットワーク ACL 設定を確認する
次ののインスタンス設定を確認します。
- 関連するセキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) では、ポート 80 と 443 でトラフィックを許可している。
- インスタンスのサブネット内のルートテーブルには、インターネットゲートウェイへのデフォルトルートが存在する。
Web サイトの DNS 設定が適切であることを確認する
ウェブサイトにおける次の DNS 設定を確認します。
- ウェブサイトが Amazon Route 53 DNS サービスを使用している場合は、DNS レコードは正しく設定されています。
- インスタンスには Elastic IP アドレスが割り当てられている。
注: Elastic IP アドレスは、インスタンスを停止して起動しても、そのインスタンスとの関連付けが維持されます。 - パブリック IP アドレスまたは Elastic IP アドレスが A レコードにマッピングされている。
Web サーバーが稼働しており、OS ファイアウォールがポートへのアクセスをブロックしていないことを確認します。
ネットワークポートの設定とウェブサーバーを確認するには、次の手順を実行します。
-
SSH または、AWS Systems Manager の機能である Session Manager を使用してインスタンスに接続します。SSH または Session Manager を使用して AWS Nitro System 上にビルドしたインスタンスに接続できない場合は、EC2 シリアルコンソールを使用してください。
-
ウェブサイトがローカルで稼働しているかどうかを確認するには、EC2 インスタンスのホストウェブサイト内から次のコマンドを実行します。
curl https://localhostまたは、
curl http://localhost:443注: curl の使用時に問題が発生した場合は、インスタンスのウェブサーバーとアプリケーション設定に問題がないかどうかを確認してください。
-
ウェブサーバーのサービスステータスを確認するには、実行しているオペレーティングシステム (OS) に応じて次のコマンドを実行します。
Red Hat Enterprise Linux (RHEL)、CentOS、Fedora、Amazon Linux:sudo systemctl status httpd.service出力例:
The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead)Debian、Ubuntu:
sudo systemctl status apache2.service出力例:
The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled) Active: inactive (dead)コマンド出力に inactive (dead) ステータスがないかを確認します。
Linux システムが System V を実行している場合は、次のコマンドを実行してウェブサーバーのステータスを確認します。sudo service httpd status注: Debian または Ubuntu を実行している場合は、httpd を apache2 に置き換えてください。
出力例:httpd is stopped -
ウェブサーバーを起動し、起動時にサービスが開始するように設定するには、使用している OS に応じて次のコマンドを実行します。
RHEL、CentOS、Fedora、Amazon Linux:sudo systemctl start httpd; sudo systemctl enable httpdDebian または Ubuntu:
sudo systemctl start apache2; sudo systemctl enable apache2 -
ウェブサーバーサービスが実行中であり、有効化されていることを確認するには、使用している OS に応じて次のコマンドを実行します。
RHEL、CentOS、Fedora、Amazon Linux:sudo systemctl status httpd.service出力例:
The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running)Debian または Ubuntu:
sudo systemctl status apache2.service出力例:
The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running)System V 上で稼働しているシステムにおいて、停止したウェブサーバーサービスを開始するには、次のコマンドを実行します。
sudo service httpd start出力例:
Starting httpd: [ OK ] -
ウェブサーバーがインバウンドのユーザー接続リクエストをリッスンしていることを確認するには、次のコマンドを実行します。
sudo netstat -tulpn|grep -i :80 tcp6 0 0 :::80 :::* LISTEN 11993/httpd注: 上記のコマンドを 2 回実行します。2 回目には、80 を 443 に置き換えます。ウェブサーバーは、HTTP トラフィックをポート 80 でリッスンし、TLS/SSL で暗号化されたトラフィックをポート 443 でリッスンします。
複数のインターフェイスを実行している場合は、次のコマンドを実行して、ウェブサーバーがすべての IP アドレスをリッスンしていることを確認します。cat /etc/httpd/conf/httpd.conf | grep Listen出力例:
Listen *:80Listen *:443 -
OS のファイアウォールを使用している場合は、ポート 80 とポート 443 でリクエストを許可していることを確認します。
-
(オプション) iptables ルールがポート 80 と 443 でのインバウンドリクエストを許可していることを確認するには、次のコマンドを実行します。
sudo iptables -vnL出力例:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 35 10863 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited上記の出力例では、ルールは Internet Control Message Protocol (ICMP)、ローカルホスト、およびポート 22/TCP (SSH) のみを許可しています。このルールは、TCP ポート 80 または 443 へのインバウンド接続をブロックします。
-
iptables ルールでポート 80 と 443 がインバウンドの HTTP および HTTPS 接続リクエストを受け入れるように設定するには、次のコマンドを実行します。
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT出力例:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 486 104K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
AL2023、AL2、および RHEL 7 以降の設定を確認する
Amazon Linux 2023 (AL2023)、Amazon Linux 2 (AL2)、および RHEL インスタンスでは、次のコマンドを実行して firewalld サービスが実行中かどうかを確認します。
sudo firewall-cmd --state
出力例:
running
firewalld サービスが実行中の場合は、次のコマンドを実行してポート 80 および 443 での接続を許可します。
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
注: 以前にルールを追加した場合は、reload コマンドを実行するとサービスがリロードされ、ルールが有効化します。
各コマンドにおいて、出力が次の例のようになっていることを確認します。
success
Debian サーバーと Ubuntu サーバーの構成を確認する
次の手順を実行します。
-
簡易ファイアウォール (UFW) を確認するには、次のコマンドを実行します。
sudo ufw status verbose出力例:
Status: active -
UFW を実行している場合は、次のコマンドを実行し、必要な TCP ポートでのインバウンド接続リクエストを許可します。
TCP ポート 80:sudo ufw allow in 80/tcpTCP ポート 443:
sudo ufw allow 443/tcp -
各コマンドにおいて、出力が次の例のようになっていることを確認します。
Rule added Rule added (v6)
追加のトラブルシューティングを行う場合は、/var/log にあるウェブサーバーのアクセスエラーログを参照し、問題が発生していないか確認します。次の、デフォルトのウェブサーバーログを参照します。
- Amazon Linux と RHEL では、/var/log/httpd を使用してください。
- Debian と Ubuntu では、/var/log/apache2 を使用してください。
注: ウェブサーバーログの場所は、サーバーの設定によって異なります。

