nginx+unicorn+redmineでサブURIを設定する

redmine+unicorn+nginxで「http://host/redmine」のようにサブURIを使ってアクセスできるように設定してみました。ちょっと苦戦しましたが、複数のWebアプリを同一サーバに配置するとどうしてもこうした設定がしたくなります。

redmine+unicorn+nginxの導入方法は他のサイトに解説があるので、サブURIの設定の仕方だけ紹介します。

    1. config/environment.rbに設定を追加
      これでredmineの画面遷移時のリンクに指定したパスが追加されます。

      ・・・
      # この1行を「Rails.application.initialize!」より前に追加
      RedmineApp::Application.routes.default_scope = '/redmine'
      # Initialize the Rails application
      Rails.application.initialize!
      
    2. unicornの起動オプションに–pathを指定
      これでredmineの静的コンテンツのリンクに指定したパスが追加されます。

      bundle exec unicorn_rails -l 3000 -E production --path /redmine
      
    3. redmineのpublicへのシンボリックリンクを作る
      ln -s /var/lib/redmine/public /var/www/html/redmine
      
    4. nginxのlocationを以下のようにする
      静的コンテンツはunicornに飛ばさず、nginxから返すようにしています。
      (rootは/var/www/htmlの前提)

      location ~ ^/redmine/.*\.(css|js|png|gif)$ {
      }
      location /redmine {
        proxy_pass http://127.0.0.1:3000/redmine;
      }
      

以上で、/redmineでアクセスできるようになります。