今日もまた踏みました

非定期更新:主に何とも言えない事態にあった際に更新しています

GitLabをReverse Proxy越しに利用する設定を確認したら迷走する事案が発生

GitLab CEを さくらインターネットVPSで使おうと思ったのだけれども、重くて我慢できる感じがしなかった。とはいえスケールアップしても、まともに動くかわからなかったので、GitLabは社内のサーバーに入れ、VPSにReverse Proxyを立てて、Reverse Proxyを経由して使用する方向で作業を進めていたが、色々と迷走してしまったので、メモを残す事にします

 

超ざっくりとした前提条件
  • Reverse Proxy側のURLは、https://reverseproxy.aaa.com:12345/で接続可能
  • GitLab側のURLは、http://gitlab.aaa.com:23456/で接続可能

 

途中はどうでも良い人向け、最終的に行ったGitLabの設定

Reverse Proxyに対応するための /etc/gitlab/gitlab.rb の修正箇所は下記

  • external_url
    ここには、GitLab側のURLではなく、Reverse ProxyへのURLを記載する
    上記前提に沿うと、'https://reverseproxy.aaa.com:12345' になる
  • nginx['redirect_http_to_https']
    GitLab側をhttpにする場合には false を設定する

  • nginx['listen_port']
    GitLab側のポート番号を指定、上記前提に沿うと 23456 になる

  • nginx['listen_https']
    GitLab側をhttpにする場合には false を設定する

設定例

external_url 'https://reverseproxy.aaa.com:12345'
nginx['redirect_http_to_https'] = false
nginx['listen_port'] = 23456
nginx['listen_https'] = false

 

参考にさせて頂いたサイトなど

GitLabサーバーを構築してみる【AlmaLinux8】 – supilog
ubuntuにGitLabをインストールしてnginxのリバースプロキシで接続する | 人と情報

 

社内サーバー側で行った手順(必要な箇所のみ抜粋)
  1. AlmaLinux 8.5をインストール
  2. dnfでepelをインストール
  3. GitLab CEをインストール
  4. GitLabを設定(ローカルでの動作確認用設定)
  5. 動作確認
  6. GitLabを設定(Reverse Proxy設定後の最終設定)
VPS側で行った手順(必要な箇所のみ抜粋)
  1. AlmaLinux 8.5をインストール(これは契約時に選択)
  2. dnfを最新に変更
  3. dnfでnginxをインストール
  4. nginxを設定
  5. 動作確認

 

上記、手順の問題点

上記の手順で進めた場合、社内サーバーに入れたGitLabの動作確認。ここで迷走しやすいので手順に注意が必要になります
最終的なGitLabの設定は上に記載させて頂いた形になるが、社内サーバーのみでの動作確認を行う際の設定は下記になります

external_url 'https://gitlab.aaa.com:23456/'
#external_url 'https://reverseproxy.aaa.com:12345'
#nginx['redirect_http_to_https'] = false
nginx['listen_port'] = 23456
#nginx['listen_https'] = false

 
ざっくりとした理由

まず、external_urlを'https://reverseproxy.aaa.com:12345'のまま、社内LAN環境より、http://gitlab.aaa.com:23456へアクセスした場合、突然 https にリダイレクトされて落ちる事がある。また、ログイン時に「422 he change you requested was rejected.」で落ちるため、動作確認ができず、色々と設定を変更して迷走することとなった
それを回避するため、最初から https でGitLabのインストールができている事を確認するのが無難な選択となります

GitLabが正常に動作しているのを確認した後、Reverse Proxyの設定を終わらせ、Reverse Proxy経由でGitLabに接続できる状態になってから、最終的な設定例に変更し、gitlab-ctl reconfigure で設定を変更します
設定変更後は、gitlab.aaa.com 側に接続しても、上記の通りログイン時に「422 he change you requested was rejected.」で落ちます
代わりに https://reverseproxy.aaa.com:12345 からの接続が可能になります

Reverse Proxyを利用する場合、external_urlには、Reverse Proxy側のURLを設定する。設定した後は、直接つないでの確認はできない。これを知っているかが迷走するかしないかの境目になりそうです