
Redmine を社内や個人環境で運用していると、既存の Web サイトやサービスと同じサーバーで公開したいケースがあります。
そのとき便利なのが Apache のリバースプロキシ機能を使って、Redmine をサブURL(例: /redmine)配下に配置する方法 です。
この記事では、Windows 環境で Apache と Puma を組み合わせ、Redmine を /redmine からアクセスできるようにする具体的な手順を紹介します。
なお、本記事は以下の記事で Redmine を作成した環境を前提としています。
・ Windows 11 (25H2) に Redmine 6.1.0 をインストール
・【Redmine】Puma 設定で同時接続数を調整する(Windows 前提)
1. 環境
1.1 OSやアプリのバージョン
| OS | Windows 11 (25H2) |
|---|---|
| Redmine | 6.1.0 |
| Ruby | RubyInstaller-DevKit 3.4.6-1 (x64) |
| PostgreSQL | 18.0 |
| アプリサーバ | Puma (production モード) |
| Webサーバ | Apache 2.4 系 (Win64版) ※XMAPP 8.2.12使用 |
| 公開URL | http://<パソコン名>/redmine/ |
1.2 インストール環境
| Redmine インストール先 | C:\Redmine |
|---|---|
| PostgreSQL データ保存先 | C:\Program Files\PostgreSQL\18\data |
| Apache 設定ファイル | C:\xampp\apache\conf\httpd.conf C:\xampp\apache\conf\httpd-proxy.conf |
| プロキシ転送先 | http://127.0.0.1:3000/redmine |
2. XAMPPのインストール
今回は Apache を XAMPP でインストールします。
XAMPPは、Web開発に必要な「Apache」「MariaDB(またはMySQL)」「PHP」「Perl」といったソフトウェアをひとまとめにし、ローカル環境で簡単にWebアプリケーション開発ができるようにする無料のパッケージソフトウェアです。本来別々にインストールする必要のある複数のツールをまとめて提供することで、初心者でも手軽に開発環境を構築し、Webアプリケーションの作成・テストを行えるようにすることを目的としています。
今回は Apache のみ使用しますが、個人的に別途、他のシステムも使用しますので、XAMPP をインストールし Apache を使用します。
■ ダウンロード
こちらのホームページよりダウンロードします。
XAMPP Installers and Downloads for Apache Friends
Windows向けの 「xampp-windows-x64-8.2.12-0-VS16-installer.exe」をダウンロードしました。
■ インストーラーの起動
「はい」を選択します。

■ 1.3 警告
「OK」を選択します。

■ 1.4 セットアップ
「Next」を選択します。

■ コンポーネントの選択
全てデフォルトのまま「Next」を選択します。

■ インストール先
デフォルトのまま「Next」を選択します。

■ 言語
デフォルトのまま「Next」を選択します。

■ 確認
「Next」を選択します。

■ インストール
アプリがインストールされます。

■ 終了
チェックボックスを外し、「Finish」を選択します。

以上で XMAPP(Apache)のインストールは終了です。
3. Redmine の設定
色々方法はあるみたいですが、今回はRadmine 起動時に読むスクリプトの config.ru を編集し環境変数 RAILS_RELATIVE_URL_ROOT を読み込むように設定し、Redmine の起動前に RAILS_RELATIVE_URL_ROOT の環境変数を設定してから起動する方法をとりました。
3.1 config.ruの編集
C:\redmine\config.ruを以下に編集します。
# This file is used by Rack-based servers to start the application.
# require_relative 'config/environment' ←コメント
# run Rails.application ←コメント
# 追記
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
map ENV['RAILS_RELATIVE_URL_ROOT'] || '/' do
run RedmineApp::Application
end
3.2 Redmineの起動
Redmine の起動前に RAILS_RELATIVE_URL_ROOT の環境変数を設定して起動します。
cd C:\Redmine $env:RAILS_RELATIVE_URL_ROOT="/redmine" bundle exec puma -C config/puma.rb

※上の画像のように Ruby 3.4 の環境では警告がでます。
これは ostruct というモジュールが Ruby 標準添付ライブラリの1つで、Ruby 3.4 ではまだ標準で入っていますが、Ruby 3.5 からは「標準 gem 化」されて同梱されなくなる予定という内容です。
現状 Ruby 3.4 なのでこの警告は無視します。
3.3 接続確認
ブラウザから「http://localhost:3000/redmine/」へアクセスして接続テストします。

ここまでで、アプリケーションサーバのサブURL経由でアクセスできることは確認できました。
次は Apache のリバースプロキシの設定になります。
4. Apache の設定
Apache のリバースプロキシ機能を設定します。
4.1 モジュールの読み込み確認(httpd.conf)
C:\xampp\apache\conf\httpd.conf に以下があるか確認します。
なければ追記&コメント解除してください。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule headers_module modules/mod_headers.so LoadModule rewrite_module modules/mod_rewrite.so Include "conf/extra/httpd-proxy.conf"
ちなみに、うちの環境では modules/mod_proxy_http.so のみがコメントになっていて、他は読み込まれる設定になっていました。
4.2 httpd-proxy.conf の編集
C:\xampp\apache\conf\extra\httpd-proxy.conf の一番最後の行(2つある</IfModule>の下)に以下を追記します。
# Redmine reverse proxy (/redmine)
<VirtualHost *:80>
ServerName your.domain.example
ProxyRequests Off
ProxyTimeout 300
LimitRequestBody 0
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-Port "80"
# /redmine だけを転送
ProxyPass /redmine http://127.0.0.1:3000/redmine retry=0
ProxyPassReverse /redmine http://127.0.0.1:3000/redmine
# /redmine → /redmine/ のリダイレクト(末尾スラッシュ揃え)
RewriteEngine On
RewriteRule ^/redmine$ /redmine/ [R=301,L]
</VirtualHost>
4. 動作確認
4.1 XMAPPの起動
「XAMPP Control Panel」を管理者権限で起動します。

4.2 Apache の起動
赤枠をクリックし Apache を起動します。

5. おわり
Redmine を Apache 経由でサブURL /redmine から公開することで、既存のサイトや他のサービスと共存させやすくなります。
最初は設定に少し手間取るかもしれませんが、一度仕組みを作ってしまえば安定して運用できると思います。
ちなみに、Redmine のアプリケーションサーバーでサブURL を作成せずにApache のリバースプロキシ機能のみで、http://your.domain/redmine/ をそのまま http://127.0.0.1:3000/ に転送すれば同じことができますが、ログが見にくくなるので、アプリケーションサーバーでもサブURLを作ったほうがよいと ChatGPT 先生に言われたので、今回のような設定になりました。
おまけ
手順「3.2 Redmineの起動」で警告がでますが、「C:\redmine\Gemfile.local」に以下を追加し、
gem 'ostruct'
パワーシェルで「C:\redmine」へ移動し以下コマンドを実行すると警告が消えると思います。
bundle install --without development test
