WordPress のリバース プロキシを設定する方法
公開: 2023-01-16WordPress 管理者は、リバース プロキシ サーバーを設定しなければならない状況に陥ることがあります。 幸いなことに、リバース プロキシ サーバーの設定は比較的簡単で、使用できるさまざまなソフトウェア パッケージがいくつかあります。 この記事では、NGINX を使用して WordPress サイトにリバース プロキシ サーバーを設定する方法の概要を簡単に説明します。
リバース プロキシ サーバーとは何か、なぜ WordPress に使用するのか
リバース プロキシ サーバーは、クライアントに代わって 1 つ以上のサーバーからリソースを取得します。 これらのリソースは、プロキシ サーバーから発信されたことを示す方法なしでクライアントに配信されます。
リバース プロキシは、元のサーバーの存在と特性を隠すことができるため便利です。 たとえば、リバース プロキシは、Web アプリケーションを悪意のある要求や大量のトラフィックから保護することで、Web アプリケーションのセキュリティ、パフォーマンス、および信頼性の追加レイヤーを提供できます。
詳細を知りたい場合は、オンラインでリバース プロキシ サーバーの詳細を学習するのに役立つリソースが多数あります。 リバース プロキシ サーバーの設定が必要になる一般的な理由はいくつかあります。
- コンテンツ キャッシュによるサイト パフォーマンスの向上
リバース プロキシの一般的な使用例は、頻繁に要求される WordPress コンテンツをキャッシュすることです。 たとえば、Web サーバーのグループが Web サイトにサービスを提供する場合、リバース プロキシは Web サイトの静的コンテンツ (HTML ページ、画像、CSS ファイルなど) を単一のサーバーにキャッシュできます。 これにより、ユーザーがページをリクエストするたびに Web サーバーからコンテンツを取得する必要がないため、WordPress Web サイトのパフォーマンスを向上させることができます。
- 画像のサイズ変更など、CPU を集中的に使用するタスクのオフロード
リバース プロキシ サーバーは、画像のサイズ変更などの CPU を集中的に使用するタスクを WordPress サーバーからオフロードできます。これらのタスクのリクエストを、それらのタスクをより適切に処理できるサーバーに転送します。 これにより、WordPress サーバー上のリソースを他のタスクのために解放することで、WordPress サイトのパフォーマンスを向上させることができます。
- リクエストのフィルタリングと悪意のあるトラフィックのブロックによるセキュリティの向上
リバース プロキシ サーバーは、リクエストをフィルタリングし、悪意のあるトラフィックをブロックすることで、WordPress のセキュリティを向上させることができます。 リクエストをフィルター処理することにより、リバース プロキシ サーバーは、悪意のある活動に関連していることがわかっている特定の IP アドレスまたは地域へのアクセスをブロックできます。 悪意のあるトラフィックをブロックすることで、リバース プロキシ サーバーは DDoS 攻撃や WordPress サイトを標的とするその他の攻撃の影響を軽減するのに役立ちます。
- 別のドメインまたはサブドメインから WordPress にアクセスできるようにする
前述のように、リバース プロキシ サーバーは、クライアントに代わって 1 つまたは複数のサーバーからリソースを取得します。 これらのリソースは任意のファイル タイプにすることができますが、最も一般的なのは Web ページです。 その後、リバース プロキシ サーバーはクライアントにこれらのリソースを提供し、サーバー自体から発信されたかのように表示します。 これは、WordPress コンテンツのリクエストを WordPress サーバーに転送するようにリバース プロキシ サーバーを構成することによって行われますが、クライアントにはローカル プロキシ サーバーからコンテンツに直接アクセスしているように見えます。
最も人気のあるリバース プロキシ サーバー
W3Techs によると、Web サイトの約 83% はリバース プロキシ サービスを採用していません。 残りの 17% はほとんどが CDN です。リバース プロキシは一般に、セキュリティ上の目的でその存在を隠しており、W3Techs などの Web サイト監視サービスがどれが最も広く使用されているかを判断するのを困難にしています. 以下に、最も一般的に使用される 3 つのリバース プロキシ ソリューションを示します。
- NGINX
NGINX は、強化されたパフォーマンス、安全性、信頼性、スケーラビリティなど、複数の利点を提供する Web サーバーです。 無料で入手することも、API ベースのセットアップが可能な企業 Web サイト向けの商用版 NGINX Plus を使用することもできます。 Cloudflare、Netflix、MaxCDNなど、かなりの数の大企業がNGINXを使用しています。 NGINX をリバース プロキシとして構成するのは簡単で、ニーズを満たすようにカスタマイズできます。
- ワニス
Varnish は、トラフィックの多い Web サイトのパフォーマンスを向上させるオープンソース ソフトウェアの一種です。 リバース プロキシ、ロード バランサー、Web アプリケーション ファイアウォール、およびエッジ認証サーバーとして機能し、ページの読み込みを高速化する Edge Side Includes (ESI) をサポートします。 NGINX または Apache Web サーバーのフロントエンドとして使用したり、WordPress のリバース プロキシとして設定したりできます。
- アパッチ トラフィック サーバー
パフォーマンスと容量で有名なオープンソースのオプションである Apache Traffic Server は、Yahoo! によって最初に開発されました。 Apache Foundation に譲渡される前に、商用サービスとして提供されていました。 現在、Akami、Apple、Comcast、LinkedIn、Yahoo など、多くのコンテンツ ネットワークや CDN でシステムを強化するために使用されています。 さらに、Apache HTTP サーバー (Apache httpd) を使用して、Web サーバーにリバース プロキシを設定することもできます。これにより、通常の Web サーバーとして動作しながら、静的コンテンツと動的コンテンツの両方をユーザーに提供できます。
- HAプロキシ
HAProxy は、Linux システムやクラウドベースのプラットフォームなど、多くの既存の Web サーバー アーキテクチャと連携するように設計された、無料のオープンソース リバース プロキシおよびロード バランサーです。 イベント駆動型の I/O モデルを利用し、NGINX と同様に複数のワーカー プロセスにリクエストを分散できます。 HAProxy は、負荷のピーク時にも大量のトラフィックを処理できることで知られています。 Airbnb、Reddit、Instagram など、世界最大のサイトで使用されています。
WordPress サイトのリバース プロキシ サーバーの使用例
他のリバース プロキシも使用できますが、NGINX が最も一般的な選択肢です。 WordPress サイトのリバース プロキシを設定するための 3 つの主な使用例を次に示します。
- 単一サーバー上のメイン Web サイトとプロキシ Web サイト
メイン サイトとプロキシ サイトの両方を同じ Web サーバーでホストしている場合は、リバース プロキシを設定して、プロキシ サイトがメイン サイトから読み込まれるようにすることができます。 これを行うには、メイン サイトで関連するすべてのリバース プロキシ ルールを構成し、プロキシ経由でロードするようにプロキシ サイトを設定します。 さらに、SSL 証明書を使用する場合は、リダイレクト ループを防ぐために wp-config.php に特定のルールを設定する必要があります。 サイトの読み込みに使用したサブディレクトリと同じサブディレクトリを持つ URL を作成することはできないことに注意してください。
- サーバーでプロキシされたサイトのみをホストする
リバース プロキシを作成するには、メイン Web サイトのサーバー管理者に連絡し、2 つのサーバーでルールを構成する必要があります。 リバース プロキシを指すドメイン名も追加する必要があります。 これは通常、プロキシされたサイト (例: your_domain.com/blog) にリンクされたサブドメイン (例: blog.your_domain.com) を介して行われます。 セットアップ プロセスを完了するには、サーバーからの IP アドレスが必要になることに注意してください。
- サーバーでホストされているメイン サイト
メイン Web サイトとそのホスティング サーバーにしかアクセスできない場合は、リバース プロキシを設定し、その設定を調整して、ページが外部ホストからプルされるようにする必要があります。 リバース プロキシ経由でアクセスされるようにプロキシ サイトをインストールおよび構成するのは、セカンダリ サーバーの管理者の責任です。
WordPress のリバース プロキシを設定する手順
WordPress のリバース プロキシを設定することは、Web サイトのパフォーマンスを向上させる優れた方法です。 また、Web サーバーを悪意のある要求から保護し、ユーザー エクスペリエンスを向上させるのにも役立ちます。 以下は、WordPress のリバース プロキシを設定するために必要な手順です。
- リバース プロキシ サーバーをインストールする
最初のステップは、リバース プロキシ サーバーをインストールすることです。 無料でオープン ソースの NGINX Web サーバーを使用することをお勧めします。 Apache などの他の一般的な Web サーバーも使用できますが、このチュートリアルでは NGINX を使用していると仮定します。 NGINX リバース プロキシ (192.xx10) を、既に稼働している Apache Web サーバー (192.xx20) と共に使用するとします。
Ubuntu サーバーに NGINX をインストールするには、次の 1 つのコマンドを実行するだけです。
sudo apt-get アップデート
sudo apt-get インストール nginx
NGINX をインストールしたら、次のコマンドを使用して仮想ホストを無効にします。
sudo unlink /etc/nginx/sites-enabled/default
次に、リバース プロキシを作成します。 etc/nginx/sites-available ディレクトリに reverse-proxy.conf というファイルを作成することで、これを行うことができます。 まず、ディレクトリに移動します。
cd etc/nginx/sites-available
vi エディターを使用してファイルを作成します。
vi 逆プロキシ.conf
次の行をファイルに追加します。
サーバー {
80を聞いてください。
位置 / {
proxy_pass http://192.xx20;
}
}
ご覧のとおり、プロキシ パスにより、リバース プロキシ経由で受信するリクエストを、メイン サーバーのリモート ソケットである 192.xx20:80 に渡すことができます。 つまり、両方のサーバーがコンテンツを共有します。 完了したら、ファイルを保存してエディターを終了します。 情報を他のサーバーに転送するには、ターミナルで ngx_http_proxy_module を使用します。 最後に、次のコマンドで /sites-enabled/ にリンクして、ディレクティブを有効にする必要があります。
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
あとは、リバース プロキシをテストするだけです。 構成テストを実行し、NGINX を再起動してパフォーマンスを確認する必要があります。 以下のコマンドを使用して、NGINX が機能するかどうかを確認します。
サービス nginx configtest
サービスnginxの再起動
テストが失敗した場合、Apache が適切にセットアップされていない可能性があります。
リバース プロキシ サーバーの制限事項
リバース プロキシは、そこを通過するすべてのトラフィックを監視および変更できるため、重大なセキュリティ リスクをもたらす可能性があります。 HTTPS トラフィックがリバース プロキシ経由で送信される場合、データを復号化して再暗号化する必要があります。これには、SSL/TLS 証明書の秘密キーが必要です。 ハッカーがこのリバース プロキシにアクセスすると、パスワードをログに記録し、悪意のあるコードを Web サイトに挿入する可能性があります。
リバース プロキシは、管理者もユーザーもメイン サーバーに直接アクセスできない場合、単一障害点を作成する可能性があります。 たとえば、1 つのリバース プロキシが複数のドメインにサービスを提供している場合、中断が発生すると、それらすべてのサイトにアクセスできなくなります。 サードパーティのリバース プロキシを使用している場合は、サイトに関する重要な詳細をそれらと共有していることを忘れないでください。
結論
WordPress のリバース プロキシを設定すると、Web サイトのセキュリティとパフォーマンスが向上します。 WordPress のリバース プロキシを設定する手順は、サーバーと構成によって異なります。 通常、プロキシ サーバーの構成、バックエンド Web サーバーのセットアップ、WordPress サイトのセットアップが含まれます。 リバース プロキシ サーバーの設定は有益ですが、制限もあります。