ubuntuにGitLabをインストールしてnginxのリバースプロキシで接続する

目次

GitLabを動かしているサーバには、Redmineなどの他のWebサイトを動かしており、nginxをフロントエンドにおいてリバースプロキシでアクセスさせています。そこでGitLabをリバースプロキシさせようとしたら苦労したので、ここにまとめておきます。

環境

  • Ubuntu 14.04 LTS
  • GitLab CE 8.1.4

GitLabを動かすサーバは、他にもWebサイトを動かしているので、nginxからリバースプロキシを使ってアクセスさせる。

GitLabのインストール方法

GitLabのインストールは、公式サイトのほうに詳しく書かれているのでそちらを参考にしてください。

Download GitLab Community Edition (CE)

基本的に、GitLabのパッケージがaptリポジトリとして提供されているので、それを登録してそこからインストールするということのようです。

インストールには、少し時間がかかるので待ちましょう。

設定

設定ファイルは、/etc/gitlab/ にあります。ここのgitlab.rbが設定ファイルです。

拡張子をみるように、rubyファイルなので、ruby言語の文法を使って書かれています。#が一行コメントです。

設定項目として、上のほうにある「external_url」をまずは設定しましょう。これは、gitlabにアクセスするときのURLを設定します。

external_url 'http://example.com' # gitlabにアクセスするときのURLを入力

次に、リバースプロキシをする際の設定をします。なのでGitLabに同梱されているnginxに直接アクセスする場合は、以降の設定はいらないので、次の節に進んでください。

リバースプロキシをさせる方法として、GitLabのnginxのリッスンポートを80から別なポートに変更します。ここでは80番ポートから8888番ポートに変更しました。そして、https通信の設定も無効にします。

nginx['listen_port'] = 8888 # リッスンポートの変更
nginx['listen_https'] = false # https通信の無効

これらの設定は、コメントアウトされているので探しだしてコメントアウトを解除して設定を書き換えてください。

ちなみに、GitLabのnginxはunicornというソフトウェアで動いているところにリバースプロキシをするので、GitLabのnginxを無効にして直接、nginxの方からアクセスするということをやっても動くのですが、https通信をしようとしたら表示が崩れたのでおすすめしません。

設定の完了後

設定が終わったら、設定の適用をするので以下のコマンドを入力してください。

$ sudo gitlab-ctl reconfigure

これで、設定が適用されます。

次に、GitLabを再起動させれば完了です。以下のコマンドを入力してください。

$ sudo gitlab-ctl restart

これで、GitLabの設定が完了です。

nginxの設定

nginxの設定として、変更したポートにリバースプロキシをさせてあげたら完了です。

ここでは、リバースプロキシに関する一部を抜粋した設定を載せます。

http通信の例です。

location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header HOST $http_host;
        proxy_pass http://127.0.0.1:8888;
}

https通信の例です。

location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto 'https';
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Ssl on;
        proxy_pass http://127.0.0.1:8888;
        proxy_redirect http:// https://;
}

nginxの設定は初心者なので、おかしいところがあると思いますが、これで動いているのでそのまま載せておきます。

これで、全てのGitLabの設定が終わりました。

さいごに

GitLabは、昔に比べるとインストールや設定が楽ですが、まだまだ難しい部分があり、ハマることがあると思うので、気をつけましょう。