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のリバースプロキシで接続する | 人と情報
社内サーバー側で行った手順(必要な箇所のみ抜粋)
- AlmaLinux 8.5をインストール
- dnfでepelをインストール
- GitLab CEをインストール
- GitLabを設定(ローカルでの動作確認用設定)
- 動作確認
- GitLabを設定(Reverse Proxy設定後の最終設定)
VPS側で行った手順(必要な箇所のみ抜粋)
- AlmaLinux 8.5をインストール(これは契約時に選択)
- dnfを最新に変更
- dnfでnginxをインストール
- nginxを設定
- 動作確認
上記、手順の問題点
上記の手順で進めた場合、社内サーバーに入れた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を設定する。設定した後は、直接つないでの確認はできない。これを知っているかが迷走するかしないかの境目になりそうです