Webサイトが外部から表示されない場合の確認手順¶
該当する症状¶
Apache、Nginx等をインストールして起動したが、ブラウザから表示されない
ブラウザに「タイムアウト」「接続できません」と表示される
IPアドレスを指定すると表示されるが、ドメイン名では表示されない
HTTP(80番)では表示されるが、HTTPS(443番)では表示されない
確認の流れ¶
Step |
確認すること |
確認する場所 |
|---|---|---|
1 |
Webサーバーが起動し、ポートで待ち受けているか |
VPS内部 |
2 |
VPS内部からWebサーバーへ接続できるか |
VPS内部 |
3 |
OS内のファイアウォールが通信を許可しているか |
VPS内部 |
4 |
パケットフィルターが通信を許可しているか |
コントロールパネル |
5 |
お手元のPCからIPアドレスで接続できるか |
お手元のPC |
6 |
ドメイン名が正しいIPアドレスを指しているか |
お手元のPC |
7 |
HTTPS(443番)で接続できるか |
お手元のPC |
Note
sudo)で実行してください。対応方法¶
Step1. Webサーバーが起動し、ポートで待ち受けているか確認する¶
Webサーバーが起動していることを確認します。サービス名は、利用しているWebサーバーとOSによって異なります。
Webサーバー |
Ubuntu、Debian |
Rocky Linux、AlmaLinux |
|---|---|---|
Apache |
apache2 |
httpd |
Nginx |
nginx |
nginx |
# systemctl status nginx
active (running) と表示されていれば、起動しています。起動していない場合は、Webサーバーのログを確認してください。
続いて、Webサーバーが80番ポート(HTTPSの場合は443番ポート)で待ち受けているか確認します。
# ss -tlnp | grep -E ':(80|443) '
LISTEN の行が表示されていれば、待ち受けています。0.0.0.0:80 や [::]:80 のように表示される場合は、すべてのIPアドレスから受け付けています。 127.0.0.1:80 と表示される場合は、VPS内部からの接続のみを受け付ける設定になっているため、Webサーバーの設定(listenするアドレス)を確認してください。Step2. VPS内部からWebサーバーへ接続できるか確認する¶
VPS内部から、Webサーバーへ接続します。
# curl -I http://localhost/
HTTP/1.1 200 OK のように、HTTPのステータスが表示されれば、Webサーバーは応答しています。
403 Forbidden や 404 Not Found が表示される場合は、公開するファイルの配置場所や、ファイルのアクセス権限を確認してください。Step3. OS内のファイアウォールが通信を許可しているか確認する¶
# ufw status
# firewall-cmd --list-all --zone=public
Status: inactive 、firewalldで not running と表示される場合は、OS内のファイアウォールは有効になっていません。80/tcp が ALLOW になっていること、firewalldでは services に http (HTTPSの場合は https )が含まれていることを確認します。Step4. パケットフィルターが通信を許可しているか確認する¶
Note
パケットフィルターとOS内のファイアウォールは、それぞれ別に設定します。OS内のファイアウォールを有効にしている場合は、Step3とStep4の両方で許可されていないと、外部から接続できません。
Step5. お手元のPCからIPアドレスで接続できるか確認する¶
お手元のPCから、VPSのIPアドレスを指定して接続します。IPアドレスは、コントロールパネルで確認できます( IPアドレスに関するご質問 )。
$ curl -I http://XXX.XXX.XXX.XXX/
> Test-NetConnection XXX.XXX.XXX.XXX -Port 80
HTTP/1.1 200 OK が表示されれば(Windowsでは TcpTestSucceeded が True であれば)、IPアドレスでの公開はできています。Step6. ドメイン名が正しいIPアドレスを指しているか確認する¶
IPアドレスでは表示されるが、ドメイン名では表示されない場合は、ドメインの設定を確認します。
> nslookup example.com
出力される Address の値が、ご利用のVPSのIPアドレスと一致しているか確認してください。一致しない場合の対応は、 接続できない原因を切り分ける(ドメイン・IP・ポート) のStep1をご参照ください。
Step7. HTTPS(443番)で接続できるか確認する¶
HTTP(80番)では表示されるが、HTTPS(443番)では表示されない場合は、次の点を確認してください。
Step3、Step4で、443番ポートへの通信を許可しているか
Step1で、Webサーバーが443番ポートで待ち受けているか(HTTPSの設定が有効になっているか)
$ curl -I https://example.com/