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

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

関連記事

一つの物理サーバに複数のIPアドレスやドメインを設定する方法~Apacheの仮想ホストの種類や設定方法

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) Apacheの仮想ホストとは? (3) IPベース仮想ホスト  (3-1) 方式の概要  (3-2) 設定方法 …

Let’s Encryptの証明書をApacheに適用する手順(CentOS7を例にご紹介)

<目次> (1) Let’s Encryptの証明書をApacheに適用する手順(CentOS7を例にご紹介)  (1-0) 前提事項  (1-1) STEP1: Let’s …

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

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

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

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

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

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

  • English (United States)
  • 日本語
Top