はじめに
前回の記事では、AWSでホストされている社内限定のWordPress管理画面の遅延問題について取り上げ、一時的な解決策として接続の待ち時間を短縮する方法を紹介しました。しかし、これはあくまで対症療法に過ぎず、根本的な解決には至っていませんでした。今回はこの問題の根本的な解決策として、プロキシサーバーの利用に焦点を当ててみます。
問題の再確認
社内限定のWordPressサイトが遅延する主な原因は、外部ネットワークに接続できないために発生するタイムアウトです。サイトの管理画面にログインするとき、WordPressは自動的に最新の更新を確認しようとします。しかし、社内のネットワーク設定が外部への接続を許していないため、更新の確認ができずに、結果としてタイムアウトするまで時間がかかってしまいます。このため、管理画面の読み込みが遅くなってしまうのです。
根本的な解決策:プロキシサーバーの導入
解決策として、プロキシサーバーを導入し、全てのHTTPリクエストをプロキシを経由して行うようにします。これにより、WordPressサイトが外部リソースにアクセスする際のネットワーク制限を回避し、遅延問題を根本から解消することができます。
実装方法
以下の手順でプロキシサーバーを設定します。
プロキシサーバーの準備
まず、動作しているプロキシサーバーが必要です。このサーバーは、WordPressがホストされているサーバーからアクセス可能である必要があります。ここでhttp://your.proxy.server:port
は、使用するプロキシサーバーのアドレスとポートに置き換えてください。
WordPress設定の変更
WordPressの functions.php ファイルに以下のコードを追加します。
add_action('http_api_curl', static function ($resource, $request, $url) {
curl_setopt($resource, CURLOPT_PROXY, 'http://your.proxy.server:port');
}, 10, 3);
このコードは、WordPressのサイトで特定のHTTPリクエストをプロキシサーバーを通じて行うようにするものです。具体的には、以下のような動作をします:
フックの使用
http_api_curl はWordPressのフックです。これを使用することで、WordPressがcURLを使用してHTTPリクエストを行う際の動作をカスタマイズできます。
アクションの追加
add_action 関数は、特定のフックに対して新しいアクション(関数)を追加します。ここでは、http_api_curl フックに対してアクションを追加しています。
カスタム関数の定義
静的関数として定義されているこのカスタム関数は、WordPressがcURLを使ってHTTPリクエストを行う際に呼び出されます。
cURLオプションの設定
curl_setopt 関数は、cURLセッションの設定を行います。ここでは、CURLOPT_PROXY オプションを使用して、すべてのHTTPリクエストを特定のプロキシサーバーを経由して行うように設定しています。
注意点
- プロキシサーバーの設定が適切であることを確認してください。
- プロキシサーバーを使用することで、ネットワークトラフィックが集中する可能性があるため、適切な負荷分散と監視が必要です。
結論
社内ネットワークなど、インターネットに直接接続できない環境でWordPressサイトを運用している場合、プロキシサーバーを利用することが有効な解決策です。この方法では、WordPressの管理画面やプラグイン更新などのHTTPリクエストをプロキシサーバー経由で行います。これにより、外部ネットワークへの直接接続が不可能な状況で生じるタイムアウト問題を回避し、WordPress管理画面の速度が向上します。結果として、プロキシサーバーの使用は、社内限定のWordPressサイトの遅延問題を根本から解決し、効率的なサイト運用を実現することができます。