Title: TeamPage のフロントエンドに Apache リバース プロキシ サーバーを使用する

多くのお客様環境において、ユーザーが TeamPage サーバーに直接アクセスする運用をしていますが、ユーザーと TeamPage サーバーとの間にリバース プロキシ サーバー (Reverse Proxy Server) を設置している運用事例もあります。

この記事では、Apache HTTP Server をリバース プロキシ サーバーとして使用する設定手順について、簡単に紹介します。



比較イメージ



一般的な、TeamPage に直接アクセスするイメージ



TeamPageに直接アクセス

Apache リバース プロキシ サーバーを介するイメージ



リバースプロキシを経由させるイメージ

使用環境



ここでは、Windows 環境で次のバージョンを使用します。



TeamPage と Apache は同じコンピューター「winvm.local」にインストールされ、TeamPage は 8080 番ポート、Apache は 80 番ポートを使用することとします。

Apache ダウンロード



https://www.apachelounge.com/download/ から Windows 版 Apache をダウンロードします。

今回は 64bit 版 Windows 用の、2.4.55 VS17 を選択しました。



Apache インストール



ダウンロードした httpd-2.4.55-win64-VS17.zip を展開し、中にある「Apache24」フォルダを適当なフォルダに設置します。

ここでは C: ドライブのルート フォルダに設置しました。(C:\Apache24 フォルダになります)



Apache 設定



基本設定



「conf」フォルダにある「httpd.conf」ファイルをテキストエディタで編集します。

次の行のコメントアウトを解除(行頭のシャープ記号を削除)し、サーバー名を設定します。(ここでは「winvm.local」と名付けました。)

ServerName  winvm.local


起動テスト



管理者モードのコマンドプロンプトを起動し、「C:\Apache24\bin」に移動し、「httpd」と入力して Enter キーを押すと Apache サーバーが起動します。画面は、下図のように「httpd」で止まったような状態になりますが、Apache は動作し続けています。(終了するには Ctrl + C キーを押します)



下図のようなファイアウォールの警告が表示されることがあります。その場合はアクセスを許可してください。



起動時に「コンピューターに VCRUNTIME140.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。」というエラーが表示される場合は、Microsoft のダウンロード サイト から「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」をダウンロード&インストールしてください。

エラー

ブラウザーで http://winvm.local/ にアクセスし、下図のように「It works!」が表示されます。これは Apache の素っ気ない初期画面で、Apache が動作していることを意味しています。



リバース プロキシの設定



「httpd.conf」ファイルの、次の行のコメントアウトを解除します。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so


「httpd.conf」ファイルの末尾に次の内容を追加します。

Alias /error/ "c:/Apache24/error/"
<Directory "c:/Apache24/error/">
  AllowOverride None
  Options IncludesNoExec
  AddOutputFilter Includes html
  AddHandler type-map var
  Require all granted
</Directory>

ProxyRequests Off
ProxyErrorOverride On
ErrorDocument 503 /error/503.html
ProxyPass /error/ !
ProxyPass /ws ws://localhost:8080/ws
ProxyPassReverse /ws ws://localhost:8080/ws
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/


動作テスト



コマンドプロンプト上の「httpd」を停止し(Ctrl + C キーを押す)、再度「httpd」を実行し、上記の設定ファイルの変更を読み込ませます。

ブラウザーで http://winvm.local/ にアクセスすると、先ほどの「It works!」の代わりに今度は TeamPage の画面が表示されます。



おめでとうございます!これで Apache リバース プロキシ サーバーを TeamPage との間に設置することができました。

サービスとしてインストール



コマンドプロンプト上の「httpd」を停止し(Ctrl + C キーを押す)、コマンドプロンプトで C:\Apache24\bin へ移動し、-k install オプションを付けて httpd を実行します。



次のメッセージの下にエラーメッセージが表示されなければ、インストールは成功です。

Installing the 'Apache2.4' service
The 'Apache2.4' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.


Windows のサービス一覧を開いて「Apache 2.4」が登録されていることを確認します。



ログのローテーション



既定では、Apache の動作ログは「C:\Apache24\logs」フォルダの中に access.log として、エラーの記録は error.log に保存されます。

このまま長期間運用するとログ ファイルが肥大化し、ディスク消費量が増えてしまいますので、適時分割・更新する「ローテーション」の設定を行いましょう。

具体的には、「C:\Apache24\bin」フォルダにある rotatelogs.exe を使って、ファイルの名前に年月日を付けた「access_log-2019-04-13.log」や「error_log-2019-04-13.log」のように保存されるようにします。

アクセス ログの設定



テキスト エディタで「httpd.conf」を開き、次の行をコメントアウトします。(行頭に半角のシャープ記号を挿入します)

# CustomLog "logs/access.log" common


その下に次の行を挿入します。「%Y-%m-%d」は「西暦4桁-月-日」を表し、「86400」は「1 日毎(86400 秒)に新しいファイルに分けなさい」を意味します。

CustomLog "|C:/Apache24/bin/rotatelogs.exe -l C:/Apache24/logs/acces_log.%Y-%m-%d.log 86400" combined


エラー ログの設定



次の行をコメントアウトします。

# ErrorLog "logs/error.log"


その下に次の行を挿入します。

ErrorLog "|C:/Apache24/bin/rotatelogs.exe -l C:/Apache24/logs/error_log.%Y-%m-%d.log 86400"


動作確認



Apache を再起動します(Ctrl + C キーで停止し、 httpd コマンドを実行して起動)。このとき、rotatelogs.exe を実行するコマンド・プロンプトのウィンドウが下図のように表示されますが、正常動作です。

httpd起動でrotatelogs.exeが実行される

TeamPage へアクセスし、下図のように日付入りのファイル名でログが保存されることを確認します。

ログローテーション結果

古いログ ファイルの削除



rotatelogs.exe は、上記のようにログ ファイルを分けてはくれますが、古いログ ファイルの削除はしてくれません。そこで、次のバッチファイルを「C:\Apache24\logs」に作成し、毎日 1 回実行されるようにタスクに登録します。

@echo off
for /f "skip=4" %%i in ('dir /b /o-n access_log.*.log') do del %%i
for /f "skip=4" %%i in ('dir /b /o-n error_log.*.log') do del %%i


skip=N で「何世代前まで残すか」を表します。ここでは「skip=7」を設定しているので、「7 日前のログまで残し、それより古いログを削除する」という動作になります。

メンテナンス中のお知らせ表示



保守作業などにより TeamPage が停止しているとき、ユーザーが Apache リバース プロキシ サーバーにアクセスしてくると、Apache リバース プロキシ サーバーは TeamPage の呼応が無いことを確認し、ユーザーに対して HTTP エラー 503 画面を表示します。

この HTTP エラー 503 用の画面をカスタマイズして、保守作業のお知らせや臨時メニューなどを表示できます。

保守作業終了後、TeamPage が復帰すると、Apache リバース プロキシ サーバーは自動的に TeamPage との仲介を再開し、HTTP 503 エラー画面は表示されなくなります。

上記で「httpd.conf」に追記した次の行は、「503 エラーが発生したら『error』フォルダの中の『503.html』を表示せよ」を意味しています。

ErrorDocument 503 /error/503.html


そこで、「C:\Apache24\error\」フォルダに 503.html ファイルを設置します。(クリックして 503.html をダウンロード

※ 画像は「いらすとや」からダウンロードした ojigi_animal_inu.png を使用しました。
--> irasutoya.com/201…

これらのファイルを設置し、TeamPage がシャットダウンされた状態で http://winvm.local/へアクセスすると、下図の HTTP 503 エラー画面(お知らせ画面)が表示されます。

TeamPageにアクセスできない旨のお知らせ画面

この 503.html をどうぞご自由に編集・変更してご利用ください。

関連記事



FAQ309: TeamPage5 Free を HTTPS で使用するには



Attachments:
network1.png
network2.png
01_VCRUNTIME140_notfound.png
503.html
05_under_construction.png
rotation.png
httpd_rotatelogs.png
download_2455_vs17.png
apache24_path.png
cmd1.png
firewall.png
it_works.png
tp_login_view.png
install_as_a_service.png
services.png
関連記事
Article: FAQ2774 (permalink)
Categories: :FAQ:Apache, :FAQ:プロキシ, :FAQ:運用保守, :FAQ:Proxy, :DocJp:FAQ
Date: 2018/05/08; 14時23分20秒 JST

Author Name: TeamPage サポート
Author ID: jpbo