📘

GitLab CE/EEをOpenLiteSpeed経由でアクセスできるようにする

2022/10/31に公開

概要

この記事では、GitLab CE/EEをOpenLiteSpeedのリバースプロキシ経由でアクセスできるよう設定を行います。

(画像を貼り付けていたつもりが消えていたので、いつか追加します。)

前提条件

以下のソフトウェアがインストールされている必要があります。

  • GitLab CE or EE
  • OpenLiteSpeed (以降 OLS と呼びます)

また、OLS側で以下の設定を行ってください。

  • 80番ポート(SSLを使用する場合は443番ポートも)をリッスンするリスナー

1. gitlab.rb の書き換え

最初に、リバースプロキシを使用できるようにするための準備を行います。

gitlab.rb
external_url = 'https://gitlab.example.com'
nginx['enable'] = false
web_server['external_users'] = [ 'nobody' ]
gitlab_rails['trusted_proxies'] = [ '127.0.0.1' ]
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"

1-1. 外部URLを設定

external_url にドメインを指定します。

gitlab.rb
external_url = 'https://gitlab.example.com'

1-2. 内蔵nginx無効化

GitLabにはnginxが内蔵されており、デフォルトではそのnginxを使用して動作するようになっています。リバースプロキシを設定する場合は内蔵nginxは不要なので無効化します。

gitlab.rb
nginx['enable'] = false

1-3. OLSの実行ユーザーの指定

OLSで指定されている実行ユーザーをここで指定します。複数指定できます。
(実行ユーザーは /usr/local/lsws/conf/httpd_config.conf で指定されていると思います)

gitlab.rb
# nobody が実行ユーザーのときの例
web_server['external_users'] = ['nobody']

1-4. 信頼するプロキシの設定

プロキシ元のIPアドレスを追加します。ここも複数指定できます。
OLSとGitLabを同一サーバーでホストしている場合は 127.0.0.1 を追加します。

gitlab.rb
gitlab_rails['trusted_proxies'] = [ '127.0.0.1' ]

1-5. GitLab Workhorseの設定

WorkhorseをTCPでリッスンするよう設定します。
同一サーバーでホストしている場合は 127.0.0.1,それ以外の場合は適切なIPアドレスを指定します。

gitlab.rb
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"

1-6. 再構成する

毎度おなじみ以下のコマンドを実行します。

$ sudo gitlab-ctl reconfigure

2. リバースプロキシの設定

OLS側でのリバースプロキシの設定を行います。SSL設定の説明は省きます。

2-1. 新たなバーチャルホストを作成する

  1. 「バーチャルホスト」→「+」より、新たなバーチャルホストを作成します。

  2. 「スクリプト/外部アプリを有効にする」を はい にして作成してください。

  3. 作成後、バーチャルホストを開き、「一般」タブ→「一般」の「Document Root」の項目を適当な場所に設定してください。(設定しないと 404 Not Found が発生します)

2-2. 外部アプリを構成する

  1. 作成したバーチャルホストを開き、「外部アプリ」タブ→「+」と進みます。タイプは「Webサーバー」とし、次へ進みます。

  2. 次の設定画面へ進んだら、名前、アドレス、最大接続数、初期リクエストタイムアウト、リトライタイムアウト の5つの項目を設定し、保存します。
    アドレスは通常、1-5で指定したものになります。それ以外の項目は適切な値に設定します。

2-3. コンテキストを設定する

  1. 「コンテキスト」タブ→「+」と進みます。タイプは「Proxy」とし、次へ進みます。

  2. 次の設定画面へ進んだら、URIを適切な値(通常は/)に、Webサーバーを2-2で作成した外部アプリに設定し、保存します。

2-4. バーチャルホストマッピングを行う

「リスナー」のリスナーリストより適切なものを選び、そのバーチャルホストマップに先程設定を行ったバーチャルホストをホストしたいドメインと共に追加してください。

2-5. LiteSpeedを再起動する

Web上で緩やかな再起動を行うか、ターミナルで sudo systemctl restart lsws を実行します。

3. アクセスできるか確認する

2-4で設定したドメインにアクセスし、GitLabの画面が表示されたら成功です。

以上で設定完了です。

参考

Discussion