1.502 Bad Gatewayエラーとは何ですか?
502 不正なゲートウェイ は、サーバがゲートウェイやプロキシとして動作しているときに、次のサーバにアクセスしようとしたが、そのサーバが不正な応答を返したことを示すHTTPステータスコードです。簡単に言うと、502 はエラータイプコードで、"ゲートウェイが違う".
2.502エラーの原因
502エラーは通常、いくつかの理由で発生する:
第一の理由:DNSキャッシュ
をオンにしない場合 かそうへいいきもう 一部の制限付きウェブサイト(フェイスブックなど)の場合、ローカルキャッシュが残り、アクセスに失敗することがあります。この場合、キャッシュを DOSウィンドウうごきだす ipconfig /flushdns
コマンドでDNSキャッシュをフラッシュする。
第二の理由:ブラウザのプロキシ設定
ブラウザでプロキシ設定が有効になっているかどうかを確認し、オフになっていることを確認してください。
第三の理由:DNSハイジャック
海外のDNSを使用していても、ハイジャックされる可能性がある。VPNをオンにしてアクセスできるデバイスもあれば、できないデバイスもある。この場合、別のDNSサーバー(Google DNSやOpenDNSなど)に切り替えることができます。
3. 502 HTTPループの誤り
502エラーは、クライアント(ウェブ・ブラウザなど)とウェブ・サーバ間の通信中に、次のように発生する:
- ウェブサイトのIPアドレスの取得:DNSを介してドメイン名をIPアドレスに変換する。
- IPソケットを開き、そのIPアドレスに接続する。
- ソケット経由でHTTPストリームを書き込む。
- ステータス・コードを含むHTTPレスポンス・ストリームをウェブ・サーバーから受け取る。
最後のステップでクライアントがステータスコード502を受け取ると、"502 Bad Gateway」エラー.
4.502エラーの修正方法
一般的なソリューション
- ページを更新するプレス
CTRL+F5
ローカルキャッシュからデータを読み込む代わりに、サーバーからデータを再取得する。 - ブラウザのキャッシュをクリアするブラウザのキャッシュファイルをクリアして、そのページをもう一度見てください。
具体的な解決策
クライアントの問題
- ISPの問題をチェックするすべてのサイトで502エラーが発生する場合は、ISP機器の故障または過負荷の可能性があります。
- 内部ネットワークの問題のチェック一部のサイトでのみ502エラーが発生する場合は、そのサイトの機器の故障や過負荷が原因である可能性がありますので、管理者に連絡して問題を解決してください。
サーバーの問題
- Nginxログの表示Nginxのログファイル(/var/log/nginx)に以下のようなエラーメッセージがないか確認してください。
上流からのレスポンス・ヘッダの読み取り中に、上流が送信したヘッダが大きすぎる。
.バッファが小さく設定されすぎている可能性がある。 - バッファサイズを大きくする::
http
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k.
3.プロキシバッファの設定::
サーバー
listen 80; server_name *.example.com; server_name
サーバ名 *.example.com;
サーバー { listen 80; サーバー名 *.example.com; location / {
プロキシバッファサイズ 64k; プロキシバッファ数 32 32k; location / {
proxy_buffers 32 32k; proxy_busy_buffers_size 128k;
proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; proxy_set_header
proxy_set_header ホスト $host.
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
4.PHP-FPMのプロセス数を増やす::
php-fpm.conf
pm.max_children = 512
pm.max_requests = 600
5.PHPの実行時間の増加::
php.ini
max_execution_time = 300
6.Nginxのタイムアウトを増やす::
http
fastcgi_connect_timeout 300;
fastcgi_connect_timeout 300; fastcgi_send_timeout 300;
fastcgi_read_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300.
5.Nginx 502 Bad Gateway エラーの原因と解決策
Nginx 502エラーの原因は様々ですが、通常はバックエンドサーバーの問題が原因です。ここでは一般的な原因と解決策を紹介します:
FastCGI バッファが小さすぎる
Nginxのログに 上流が送信したヘッダーが大きすぎる
エラーは、バッファサイズを大きくすることで解決できる:
http
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k.
プロキシバッファが小さすぎる
リバースプロキシを使っている場合、大きすぎるヘッダーは502エラーになるかもしれない:
サーバー
listen 80; server_name *.example.com; server_name
サーバ名 *.example.com;
サーバー { listen 80; サーバー名 *.example.com; location / {
プロキシバッファサイズ 64k; プロキシバッファ数 32 32k; location / {
proxy_buffers 32 32k; proxy_busy_buffers_size 128k;
proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; proxy_set_header
proxy_set_header ホスト $host.
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
PHP-FPMのプロセス数が少なすぎる
修正 php-fpm.conf
文書はプロセス数を増やす:
pm.max_children = 512
pm.max_requests = 600
PHP実行タイムアウト
修正 php.ini
実行時間を長くするための文書:
max_execution_time = 300
Nginxの待機タイムアウト
Nginxの設定でタイムアウトを増やす:
http
fastcgi_connect_timeout 300;
fastcgi_connect_timeout 300; fastcgi_send_timeout 300;
fastcgi_read_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300.
その他のソリューション
- 十分な PHP-FPM プロセスがあるかどうかを調べます:
netstat -anpo | grep "php-cgi" | wc -l
プローブ リクエスト終了タイムアウト
セッティング
php-fpm.conf
リクエスト終了タイムアウト = 0
502 Bad Gatewayエラー問題のほとんどは、上記の方法で効果的に解決できます。この記事が、502エラーをよりよく理解し、解決し、ウェブサイトの安定性とユーザーエクスペリエンスを向上させる一助となることを願っています。
お問い合わせ |
---|
記事が読めない?無料でお答えします!個人サイト、中小企業サイトのための無料ヘルプ! |
① 電話:020-2206-9892 |
② QQ咨询:1025174874 |
三 Eメール:info@361sale.com |
④ 勤務時間:月~金、9:30~18:30、祝日休み |