2026年7月5日
2026年7月5日
WordPressのHTTP 429 Too Many Requestsを解決
はじめに
この記事では、 WordPressサイトを運営している際に遭遇しがちな「HTTP 429 Too Many Requests」エラーの解決方法について解説します。このエラーは、一時的なアクセス制限が設けられたことを示しており、適切な対応を行わないとサイトの機能に深刻な影響を及ぼす可能性があります。
症状・背景
このテーマが必要になる主な場面:
- アクセス集中時にサイトへの接続ができなくなる
- APIやRSSフィードを使用する際、大量リクエストによる制限がかかりアクセスがブロックされる
- セキュリティプラグインによって不正アクセスを防ごうとし、誤って正当なユーザーもブロックしてしまう
手順・設定方法
ステップ1: エラーロギングを確認する
# ログファイルを開く
tail -f /var/log/apache2/error.log
ステップ2: アクセス制限を緩和する設定を行う
# .htaccessにアクセス制限のルールを追加
nano /var/www/html/wp/.htaccess
# 以下のように記述
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin)
RewriteRule .* - [F]
</IfModule>
# アクセス制限を緩和するための設定
nano /etc/apache2/sites-available/000-default.conf
<Directory "/var/www/html/wp">
# 以下を追加または修正
LimitRequestFieldSize 16384
LimitRequestBody 8192
</Directory>
ステップ3: セキュリティ設定を見直す
# ModSecurityのルールを確認・調整する
nano /etc/modsecurity/modsecurity.conf
# ルールの調整例
SecRule REQUEST_HEADERS:User-Agent "^Wget" "id:100,phase:2,t:none,deny,status:403,msg:'Blocking Wget requests'"
# ModSecurityの設定を有効にする
a2enmod modsecurity
# Apacheを再起動する
systemctl restart apache2
ステップ4: パフォーマンス最適化を行う
# PHPのタイムアウト時間を変更する
nano /etc/php/7.4/apache2/php.ini
; 以下を追加または修正
max_execution_time = 60
memory_limit = 128M
# Apacheを再起動して設定を反映させる
systemctl restart apache2
注意事項
- セキュリティ設定を見直す際は、サイトの機能に必要なルールも同時に確認すること。
- パフォーマンス最適化を行う際には、実際のトラフィック状況と照らし合わせて調整することが重要です。
- ModSecurityなどの高度なセキュリティ機能を有効にすると、正常なアクセスもブロックしてしまう可能性があります。
- 接続制限が緩和された後でも、定期的にログを確認して適切な設定であることを確認すること。
まとめ
1. エラーロギング: エラーの原因を特定するためには、まずログファイルを確認することが重要です。
2. アクセス制限: アクセスが集中した際でもサイトへの影響を最小限に抑えるために、適切なアクセス制限を設けることが必要です。
3. セキュリティ設定: ModSecurityなどの高度なセキュリティ機能を使用することで、不正アクセスからの防御力を高めることができます。
4. パフォーマンス最適化: サイトのレスポンスタイムや最大容量を改善するために、PHPとApacheの設定を見直すことが有効です。
5. 定期的なメンテナンス: 上記の調整を行った後も、定期的にログの確認や設定の見直しを行うことで、サイトの安定稼働を維持することができます。
関連記事: