WEBサイトが表示されない勘所

# はじめに

サイトが表示されない、と一言で言ってもブラウザ上には色々なエラーメッセージが表示されているはずです。
そんなエラーメッセージからちょっとでも障害箇所の切り分けの役にたてばー的な感じのお話です。
**自分でサイトを構築・運営している人向けの記事です。(強調)**

# 前提
ブラウザはGoogleChrome、サーバーはAWSでALB+EC2のApache&PHP-FPM構成をとります。
下の様な感じ
![80926f21-38b2-ed14-635a-61b496a15390.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/3124beeb-4ba2-3821-2da1-cfa8745f4ca7.png)


# エラー

## 自宅の中の壁

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/8e0c6542-9b47-5b06-8adc-bafeb3c150f1.png)


### ERR_INTERNET_DISCONNECTED
- ネットに繋がってないぞ？
- 有線ならケーブルちゃんと刺さってる？
- WiFi繋がってる？
- プロバイダ障害でてない？（これはどうにもできない）

### ERR_CONNECTION_TIMED_OUT
- ルーターがちゃんとインターネットに繋がってる？
- FireWallの設定でポート閉じてない？（銀行系でSSLが8443とかになってるとありがち）
- プロバイダの障害で繋がってたものが切断され、DNSなどをキャッシュしてたりすると起きる場合も。
※他でも登場する

**ブラウザの4xx系エラー以外一般的に自分でなんとかできるのはここまで**
ここからは自分が管理しているサービスの場合。

## インターネットの壁

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/e3915e40-7477-15a9-d2b0-420d29b1dc84.png)

### ERR_CONNECTION_TIMED_OUT

- また出てきた、サーバーが応答しないぞ、他のサイトが表示されるならインターネットには出ている。
- 自分が管理しているサイトの場合、DNSレコードtypoしてない？


### ERR_NAME_NOT_RESOLVED
- DNSに名前がない。
- URLをtypoしてない？
- * (ワイルドカード)をAレコードで足してない？DNSのサービスによっては* (アスタリスク)というレコードになる。（特にWindowsServer)

## ロードバランサとサーバーの壁

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/d496cf6f-2fd8-ccd2-8b3b-1e24c86c341b.png)

### ERR_CONNECTION_REFUSED
- HTTPしか待ち受けてないのにHTTPSで接続していないか？（もしくは逆）
    - ちゃんとリダイレクトの設定をしましょう。
    - 待ち受けていないポートに接続しても拒否されるよ。
- SSLの設定大丈夫？（ELBではあまりでないハズ）

### 504GATEWAY TIMEOUT

- ELBの後ろにサーバーがいないっぽい
- ヘルスチェックは通ってるけど、実データの通信が遮断されてる時も。
    - セキュリティグループでELBからEC2インスタンスの通信許可を忘れてることも多め。

### 502BAD GATEWAY

- サーバーが変な応答返したぞ
    - ターゲットグループの設定は大丈夫？ポート80で待ってるのに443で通信してない？

##ミドルウェアの壁

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/e949b418-c867-1d7f-2e03-27029a3522fd.png)

### 403 FORBIDDEN
- 正しいURLにアクセスしているか
- 許可されていない、ディレクトリのRequireの設定は大丈夫？
    - ELB経由の場合サブネットのIPを許可しないといけない。

### 401 UNAUTHORIZED
- 正しいURLにアクセスしているか
- 認証されていない、Basic認証出てたのにキャンセルしたかパスワード間違えていないか。

### 404 NOT FOUND
- 存在しないぞ、URLをtypoしてない?
- アプリケーションはちゃんと配置した？

### ERR_TOO_MANY_REDIRECTS

- リダイレクトループが発生している
    - アプリケーションがHTTPSを強制するのにELBのアクセスがHTTPで無限ループするケースが多い
    - confや.htaccessのリダイレクトルールの設定を確認しよう、PHPなら↓で上書きしちゃうなど
        - wordpressでやりがち

```php
$_SERVER['HTTPS'] = 'on';
```

### 503 SERVICE UNAVAILABLE
- バックエンドのPHPと通信できない
    - ちゃんとプロセス立ち上がってる？
    - proxyの設定は正しいか、php-fpmの待受にちゃんと渡せるか？
    - 過負荷で死んでる・プロセスが足りない時も。

##　アプリケーションの壁

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/fde5b2e7-e52d-7852-6211-5a4e4d28e37e.png)

### 504 GATEWAY TIMEOUT
- またきた、アプリケーションが応答遅くて時間切れ。
    - Apacheの504はこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/587a34b9-4ced-1488-14b2-41f359fc44e4.png)
    - ELBはこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143026/3a708aca-b0c7-5d1d-78ff-d53eed376754.png)
エラー画面で誰がエラーを吐いているか見分けられるといいかも


###　500 INTERNAL SERVER ERROR
- プログラムのエラー、頑張って直してください。
    - エラーログをちゃんと出力して、確認するといい。


#おわりに

通常のネットサーフィンの際にエラーに遭遇しても、責めずにサイト管理者を応援してあげましょう。


ぱっとよく見るエラーを並べてみたのですが、こんなメッセージみたけどとかあればコメントいただければ追記したいとおもいます