Title: Apache を使って TeamPage をリバース プロキシ構成で運用する (HTTP)
多くのお客様環境において、ユーザーが TeamPage サーバーに直接アクセスする運用をしていますが、ユーザーと TeamPage サーバーとの間にリバース プロキシ サーバー (Reverse Proxy Server) を設置している運用事例もあります。
この記事では、Apache HTTP Server をリバース プロキシ サーバーとして使用する設定手順について、簡単に紹介します。
この記事は、Apache と TeamPage の間だけでなく、ユーザーと Apache の間も暗号化しない (HTTP) 構成について説明しています。
HTTPS で運用する場合は、FAQ309: Apache を使って TeamPage を HTTPS で運用する をご覧ください。
比較イメージ
一般的な、TeamPage に直接アクセスするイメージ

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

使用環境
ここでは、Windows 環境で次のバージョンを使用します。
- Apache HTTP Server = バージョン 2.4.33 Win64
- TeamPage Server = バージョン 6.2.25
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
ProxyErrorOverride について
この設定は、TeamPage が返したエラー応答を Apache 側のエラーページに差し替えるかどうかを制御します。
Off を指定してください。 On にすると、TeamPage が返す認証要求 (HTTP 401) まで Apache が差し替えてしまい、Claude 連携 (MCP) などの認証が必要な機能が動作しなくなります。
なお Off にしても、下記「メンテナンス中のお知らせ表示」の 503 画面は正常に動作します。TeamPage が停止しているときの 503 は Apache 自身が生成するものであり、この設定の対象外だからです。
「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 Off
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 を実行するコマンド・プロンプトのウィンドウが下図のように表示されますが、正常動作です。

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 エラー画面(お知らせ画面)が表示されます。

この 503.html をどうぞご自由に編集・変更してご利用ください。
関連記事
FAQ309: Apache を使って TeamPage を HTTPS で運用する