このエントリでは、
nginxのreverse-proxyの後ろで、Forgejoを動かすときの設定メモを残しておきます。

Forgejoのセットアップは、以下の手順で行った想定で記載します。

UbuntuLinuxにForgejoをセットアップする手順
https://takemikami.com/2024/0318-ubuntulinuxforgejo.html

試した環境:

  • Ubuntu Linux 22.04.3
  • nginx 1.18.0
  • Forgejo 1.21.7

基本的には、以下の公式の説明通りです。

Reverse proxy | Forgejo
https://forgejo.org/docs/latest/admin/reverse-proxy/

Forgejoでsubpathを有効にする

http://example.com:3000/のようなURLで利用しているForgejoを、
http://example.com/forgejo/のようなURLで利用したいとします。

http://example.com/forgejo/~をnginxで受けて、
http://127.0.0.1:3000/~にForwardするようにします。
この時に返却されるHTML内のリンクは、http://example.com/forgejo/~を向いている必要があるので、
「ROOT_URL」を設定を次のように変更します。

/var/lib/forgejo/custom/conf/app.ini

※省略※
[server]
ROOT_URL = http://example.com/forgejo/
※省略※

nginx側のreverse-proxy設定

nginx側の設定は、先ほど記載したように、
http://example.com/forgejo/~http://127.0.0.1:3000/~とForwardするので、
次のようになります。

/etc/nginx/sites-enabled/default

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        ※途中省略※

        location /forgejo/ {
                rewrite ^ $request_uri;
                rewrite ^/forgejo(/.*) $1 break;
                return 400;
                proxy_pass http://127.0.0.1:3000$uri;
                proxy_set_header Connection $http_connection;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        }
}

以上。