Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Apache

Apacheのリバースプロキシの設定方法をご紹介

投稿日:2021年2月28日 更新日:

<目次>

(1) Apacheのリバースプロキシの設定方法をご紹介
 (1-1) 設定の概要
 (1-2) 設定の手順
  (1-2-1) STEP1:リバースプロキシ用のモジュール確認
  (1-2-2) STEP2:リバースプロキシ用のモジュール有効化
  (1-2-3) STEP3:仮想ホストの新規作成
  (1-2-4) STEP4:設定の反映(サービスの再起動)
  (1-2-5) STEP5:疎通確認

(1) Apacheのリバースプロキシの設定方法をご紹介

(1-1) 設定の概要

リバースプロキシとは、ウェブサーバの手前でクライアントからのリクエスト(要求)を転送するサーバで、セキュリティやパフォーマンス、信頼性の向上の目的で導入されます。

リバースプロキシを導入する事により、例えばご自身の「ドメイン名」を入力するだけで、ご自身のWebサイトを表示するように改善する事ができます。

(例)

//[対応前]はポート番号やアプリケーション名を入力しないとサイトが表示されなかった・・・
[対応前] http://[Your Domain]:8080/[Your App Name]

//[対応後]はドメイン名のみでサイトにたどり着ける
[対応後] http://[Your Domain]/
 
本記事の例では、Apacheの仮想ホストを立てて、背後にある1つ以上のアプリケーションサーバの「リバースプロキシサーバ」として動作させます。今回は単一の仮想ホストを作成し、ネットワークのトラフィックを取得します。またHTTPとHTTPSの両方に対応させる場合、プロキシ設定はHTTP(80番ポート)とHTTPS(443番ポート)の両方に適用される必要があります。

(図311)①一般的なリバプロ

一般的なリバプロでは上記のように「リバースプロキシサーバ」1つに対して複数のアプリケーションサーバが背後に控えますが、今回はApacheとTomcatを同居させる事で、よりシンプルにしています。

(図311)②ApacheとTomcat同居の構成

目次にもどる

(1-2) 設定の手順

(1-2-1) STEP1:リバースプロキシ用のモジュール確認

はじめにApacheのリバースプロキシ用のモジュールが有効になっているか?を確認します。

$ httpd -M

(図321)①

有効になっている事を確認するべきは下記4つのモジュールになります。

 proxy_module (shared)
 lbmethod_byrequests_module (shared)
 proxy_balancer_module (shared)
 proxy_http_module (shared)

(図321)②

(1-2-2) STEP2:リバースプロキシ用のモジュール有効化

①設定ファイルの編集

もし上記のチェックにて有効化されていないモジュールがあった場合は、有効化を行います。「etc/httpd/conf.modules.d」配下にモジュールの有効化を制御する設定ファイルがあるため、それを編集していきます。リバースプロキシの場合は「00-proxy.conf」というファイルを設定します。

vi /etc/httpd/conf.modules.d/00-proxy.conf

(図322)①設定ファイルの場所

②モジュールの有効化

ファイルの中から該当するモジュールを探し、もしコメントアウト(#)されていたら解除して有効化します。

(図322)②モジュールの有効化

③設定の反映

設定ファイルを編集したら、サービスを再起動して変更の反映を行います。
$ sudo systemctl restart httpd

目次にもどる

(1-2-3) STEP3:仮想ホストの新規作成

リバプロに必要なApacheモジュールが確認できたら、次は仮想ホストの設定を行います。仮想ホストはApacheにおいて1つのサーバで複数のドメインを運用するための技術で、仮想サーバ単位にIPを割り当てたり、ドメインを割り当てたりしてウェブサイトをホストします。

今回はその技術を使ってリバースプロキシを実現します。仮想ホストは拡張子が「.conf」のファイルで定義する事ができ、「/etc/httpd/conf.d/」配下に新規に作成する事で読み込まれます。

①設定ファイルの作成

viエディタ等で新規に仮想ホストの設定ファイルを作成します。

$ sudo vi /etc/httpd/conf.d/[任意のファイル名].conf

(図323)①

②設定ファイルの編集

仮想ホストの設定雛形の中身として、リバースプロキシの設定記述を足していきます。

<VirtualHost *:80>
        ProxyPreserveHost On

        ProxyPass / http://tennis-database.com:8080/TennisDatabase/
        ProxyPassReverse / http://tennis-database.com:8080/TennisDatabase/
</VirtualHost>

(表)各設定項目の意味について

ProxyPreserveHost = [On/Off] ・この設定をONにするとApacheはリクエストが来た元のサーバのヘッダ情報?を、裏にあるAPサーバに渡します
ProxyPass / [My Application URL] ・リバースプロキシの設定そのもので、クライアントのリクエストに対して、それをどこに送るか?を定義しています(行き)。
・指定したURL配下の全て(ページや資源)に対してプロキシとして機能する事を意味します。
(例1)
・サイトのドメイン: http://sample.org/
・プロキシ設定: ProxyPass /test/hello/ http://test.com/
・ブラウザ入力URL: http://sample.org/test/hello/world
のような条件の場合、リクエストは内部的にはプロキシリクエストに変換され「http://test.com/world」となります。つまり「ProxyPass [アプリケーションパス] [リダイレクトするドメイン]」のような記述になっています。
ProxyPassReverse / [My Application URL] ・イメージとしては「戻り」のヘッダー修正。
・背後のサーバ⇒Apache⇒クライアントブラウザへのレスポンス(戻り)のヘッダを編集するための設定です。
・ApacheにHTTPリダイレクトレスポンスのLocationレスポンスヘッダを編集するように指示をしています。
・これにより、背後のサーバがロケーションヘッダ(リダイレクト指示)を返却した際に、背後のサーバへリダイレクトさせるのではなく、プロキシのアドレスにリダイレクトする事を保証します。
・例えばアプリが「localhost:8081」に配備されていたとして、ロケーションヘッダーには「http://localhost:8081/XXX/」のようなパスが記載され、Apacheがこれをブラウザに連携するが、ProxyPassReverseはそれをインターセプトし、Apacheのプロキシ設定に合うように書き換えします。
・基本的にはProxyPassと同じ設定にします。

(図323)②

目次にもどる

(1-2-4) STEP4:設定の反映(サービスの再起動)

サービスを再起動して設定を反映させます。

$ sudo systemctl restart httpd

(図324)

目次にもどる

(1-2-5) STEP5:疎通確認

ここまでの設定が完了すると、以下の①②③の3つのURLを指定した際に、ApacheのWelcomePageの代わりに、Apacheの背後のサーバのページが応答するはずです。

①ドメイン名(例:tennis-database.com)
②ホスト名(例:http://[ホスト名])
③IPアドレス(例:http://[IPアドレス])

疎通確認として実際にブラウザから「ドメイン名」のみを入力し、ウェブサイトが表示できるか?をチェックします。

(図325)①ドメイン名(例:tennis-database.com)

(図326)②ホスト名(例:http://[ホスト名])

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Apache

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ApacheとNginxの違いやそれぞれの特徴について

<目次> (1) ApacheとNginxの違いやそれぞれの特徴について  (1-1) Apacheとは?  (1-2) Nginxとは?  (1-3) Nginxのアーキテクチャについて  (1-4 …

Apacheのリバースプロキシをhttps化する手順について

<目次> (1) Apacheのリバースプロキシをhttps化する手順について  (1-0) STEP0:前提事項の確認  (1-1) STEP1:mod_sslモジュールの導入  (1-2) STE …

TomcatのURLに付くポート番号8080を非表示にしてドメイン名のみでサイトにアクセスする方法と手順

本記事で実現したい事は下記2点、①URLのポート番号・アプリ名を非表示(リバプロ)と②JSP/Servlet名非表示(web.xml)です。これらを実現する事でブラウザにドメイン名のみ(例:XXXX. …

Apache HTTP Serverとは?概要や主要な機能についてご紹介

<目次> (1) Apache HTTP Serverとは?概要や主要な機能についてご紹介  (1-1) Apacheとは?  (1-2) Apacheの主な機能  (1-3) Apacheの使用例 …

LiteSpeedとApacheの違いや特徴~Webサーバ比較~

<目次> (1) LiteSpeedとApacheの違いや特徴~Webサーバ比較~  (1-1) LiteSpeedの概要  (1-2) 比較表(LiteSpeedとApache)  (1-3) 比較 …

  • English (United States)
  • 日本語
Top