はじめに
サードパーティの拡張機能は、非常に便利な追加機能です。これらを使用すると、Apache HTTPなどのサーバーの設定や操作が大幅に簡素化され、容易になります。必要に応じて、Apacheのこれらのモジュールの一部を使用してリバースプロキシを実行することもできます。サーバー構成からレイヤーを1つ削除するか、モジュールを使用して接続をリダイレクトすることができます。
このガイドでは、Apacheと、mod_proxyなどのサーバープラットフォームに関連するさまざまなモジュールについて説明します。また、これをリバースプロキシとして使用し、バックエンドのアプリケーションサーバーに接続をリダイレクトする方法についても説明します。
Apacheとは?
Apacheは、HTTPサーバーであり、Web関連の目的で非常に一般的に使用されています。しかし、さまざまな目的で、複数のプラットフォームにわたって使用することができます。また、ステップバイステップのチュートリアルに従って、UbuntuにApache Webサーバーをインストールすることができます。さらに、このチュートリアルに従って、Let’s EncryptでApacheサーバーを保護する方法を学ぶこともできます。また、Ubuntu 20.04でApacheバーチャルホストをセットアップする方法.
も確認できます。外部モジュールを使用することで、Apacheの機能と実装をさらに探索できます。これらは、接続や設定に関するさまざまなタスクを実行するために使用できるサードパーティのモジュールです。たとえば、mod_rewriteモジュールを使用して、ルールベースのURL書き換えを実行できます。これらのモジュールのもう1つがmod_proxyです。後者のモジュールは、コミュニティではあまり活用されていません。主に、多くの人々がその機能や用途の広さを認識していないためです。mod_proxyは、その名の通り、バックエンドサーバー用のゲートウェイまたはプロキシを配置するのに役立ちます。
それでは、’詳しくmod_proxyについて説明し、それをリバースプロキシとして使用する方法を見ていきましょう。
mod_proxy:Apacheをリバースプロキシとして使用する
お分かりのように、mod_proxyはモジュールです。これは、さまざまな接続を形成およびリダイレクトするために使用できるApacheのモジュールです。システム上の他のモジュールと同様に、有効化して設定することもできます。mod_proxyのユニークな点は、単一のモジュールではないということです。実際には、以下に示すような異なるモジュールのコレクションで構成されています。これらはそれぞれ独自の機能を備えています。このように、mod_proxyは機能において多くの多様性を提供します。
以下のmod_proxyモジュールをご覧ください。
mod_proxy
これはメインのプロキシモジュールです。Apacheでは、このモジュールを使用してさまざまな接続を設定および管理できます。また、接続のリダイレクトにも役立ちます。
mod_proxy_http
その名の通り、このモジュールはHTTPおよびHTTPSプロトコルを扱います。このモジュールを使用して、これらのプロトコルのプロキシ機能を実装できます。
mod_proxy_ftp
mod_proxy_ftpは、FTPプロトコルを扱う場合に機能します。
mod_proxy_connect
このモジュールは、SSLトンネリングを実行する場合に役立ちます。
mod_proxy_ajp
AJPプロトコルを使用する場合は、mod_proxy_ajpを使用できます。
mod_proxy_wstunnel
これは、WSやWSSなどのWebソケットを扱う場合に便利です。
mod_proxy_balancer
ロードバランシングやクラスタリング機能を利用したい場合は、このモジュールを使用できます。
mod_cache
mod_cacheモジュールは、予想通り、キャッシュ目的に役立ちます。
mod_headers
このモジュールを使用して、HTTPプロトコルを使用して作成するヘッダーを管理できます。
mod_deflate
このモジュールは圧縮目的で使用されます。
これらのモジュールについてさらに詳しく知りたい場合は、 Apacheの公式サイトをご覧ください。公式ドキュメントには、mod_proxyやApache自体に関する詳細情報も記載されています。
Apacheとmod_proxyのインストール方法
システムにApacheとmod_proxyをインストールするための簡単な手順は次のとおりです。
- サーバーの準備
まず、クラウドサーバーが準備されていることを確認する必要があります。これを行うには、オペレーティングシステムと関連ソフトウェアを最新バージョンにアップデートする必要があります。
次のコマンドを使用して、アプリケーションをアップグレードします。
|
1 2 3 |
apt install aptitude aptitude update aptitude -y upgrade |
- 必須パッケージのインストール
サーバーの準備ができたら、必要なツールを装備する必要があります。この目的のために、build-essential パッケージをインストールする必要があります。このパッケージは、ソースからインストールするために必要なすべての基本ツールで構成されています。次のコマンドでインストールできます。
|
1 |
aptitude install -y build-essential |
- モジュールと依存関係の取得
最後に、モジュールと依存関係をインストールする必要があります。これを行うには、次のコマンドを実行します。
|
1 |
aptitude install -y apache2 apache2-bin libxml2-dev |
モジュールの有効化:プロキシ接続でApacheを設定する方法は?
Apacheの設定に取りかかる前に、モジュールを有効化する必要があります。これらのモジュールは、必要な設定を行い、さまざまなタスクを実行するのに役立ちます。
まず、システムでどのモジュールがすでに動作しているかを確認する必要があります。それだけでなく、すべてのモジュールが適切にインストールされ、有効化できる状態にあることを確認する必要もあります。次のコマンドを実行すると、Apacheサーバーで利用可能なすべてのモジュールが表示されます。
|
1 |
a2enmod |

ご覧のとおり、応答には利用可能なすべてのモジュールが詳細なリストの形式で表示されます。このリストを参照して、有効化するモジュールを決定します。Apacheに通知するには、次のコマンドを使用し、例の代わりに目的のモジュールを入力します。
|
1 |
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html lbmethod_byrequests |
一方、各モジュールを個別に有効化することもできます。そのためには、次のコマンドを使用します。
|
1 2 3 4 5 6 7 8 9 10 |
a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_connect a2enmod proxy_html a2enmod lbmethod_byrequests |
一部のモジュールは、おそらくサーバー上でデフォルトで有効化されています。それらが有効になっているかどうかを確認する方法が気になるかもしれません。目的のモジュールがアクティブであることを確認するには、それを2回有効化してみてください。これにより、モジュールが確実に有効になります。
- デフォルト設定の変更
まず、デフォルトの設定を変更する必要があります。そのためには、デフォルトの設定ファイルである 000-default.conf にアクセスする必要があります。このファイルは /etc/apache2/sites-enabled 内にあります。プロキシ機能を持たせるために、このファイルを変更する必要があります。
まず、nanoテキストエディタを開いてデフォルトのバーチャルホストを編集します。これを行うには、次のコマンドを実行します。
|
1 |
nano /etc/apache2/sites-enabled/000-default.conf |
ここでは、mod_virtual host と mod_proxy を総称してプロキシバーチャルホストと呼びます。これで、次の設定を実装できます。システムや要件に合わせて、必要に応じて変更を加えることができます。
|
1 2 3 4 5 6 7 |
<VirtualHost *:*> ProxyPreserveHost On ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ ServerName localhost </VirtualHost> |
Ctrl + X を押し、Y で確認すると、保存して終了できます。
- ロードバランシング機能の有効化
ロードバランシング は、プロキシ上の接続を効果的に分散するのに役立ちます。これは、単一のサーバーではなく、複数のバックエンドアプリケーションサーバーを使用している場合に非常に役立つアイデアです。ロードバランシング機能は、接続、つまり「負荷」を分散します。
この機能を有効にするには、このガイドで前述した手順を繰り返す必要があります。ただし、バーチャルホストを設定する際には、次の設定を使用する必要があります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:*> <Proxy balancer://mycluster> # バックエンドサーバーの定義: # サーバー 1 BalancerMember http://0.0.0.0:8080/ # サーバー 2 BalancerMember http://0.0.0.0:8081/ </Proxy> # 必要に応じてバーチャルホストの設定を適用します # ただし、負荷を分散するために ProxyPass の引数に # "mycluster" を使用するように設定します ProxyPass / balancer://mycluster </VirtualHost> |
- リバースプロキシサポートの有効化
もしあなたがSSL接続や証明書を扱っている場合は、バーチャルホストでリバースプロキシをサポートするように設定する必要があります。このセカンダリバーチャルホストには、以下の設定が必要です。前のステップの手順を実行する必要があります。設定オプションを以下に記載されているものに置き換えるだけです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<VirtualHost *:443> SSLEngine On # SSL証明書へのパスを設定します # 使用方法: SSLCertificateFile /path/to/cert.pem SSLCertificateFile /etc/apache2/ssl/file.pem # 接続をプロキシするサーバー、または; # アプリケーションサーバーの一覧: # 使用方法: # ProxyPass / http://[IPアドレス]:[ポート]/ # ProxyPassReverse / http://[IPアドレス]:[ポート]/ # 例: ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ # または、負荷を分散します: # ProxyPass / balancer://balancer_cluster_name </VirtualHost> |
上記の設定を機能させるには、SSLモジュールも有効にする必要があります。
|
1 |
sudo a2enmod ssl |
- Apacheの再起動
すべての設定が完了しました。最後に、Apacheサーバーを再起動して変更を適用します。次のコマンドを実行してApacheを再起動できます。
|
1 |
service apache2 restart |
結論
これで完了です!Apacheサーバーにリバースプロキシゲートウェイを正常にセットアップできました。これで、Apacheは受信した接続をバックエンドのアプリケーションサーバーにリダイレクトするようになります。
この素晴らしい点は、設定プロセスにほとんど手間がかからず、非常にシンプルであることです。具体的な手順がわかったので、Apacheでのリバースプロキシのセットアップに困ることはないでしょう。
ハッピーコンピューティング!

コメント
コメントはまだありません。最初のコメントを投稿しましょう。