UbuntuにNginx+FastAPIを導入してサブディレクトリから使えるようにする

公開日:
目次

Nginxを使用してFastAPIアプリケーションをサブディレクトリ経由で利用可能にする方法を紹介します。

基本的にはUbuntu環境(またはおそらくその他のLinux環境)で、nginx(systemdへの登録済み)とFastAPIが既にインストールされていると仮定しています。

Nginxのロケーションファイルの変更

FastAPIアプリケーションをサブディレクトリから利用可能にするためには、まずnginxの設定を調整する必要があります。

Nginxのロケーションファイルは通常、etc/nginx/sites-available/defaultに配置されています。

このファイルを編集し、FastAPIアプリケーションへのルーティングを設定します。

以下は、そのための設定の例です(必要なところ以外は省略してます)。

server {

location / {

}

location /subdirectory_name/ {
     proxy_pass http://localhost:8000;
}

}

この設定では、/subdirectory_name/というパスへのリクエストが、localhost:8000(FastAPIアプリケーションがデフォルトで稼働しているアドレス)にプロキシされます。

/subdirectory_name/は、利用したいドメインの状況に応じて適宜変更してください。

設定を反映させるためには、nginxを再起動する必要があります。以下のコマンドを実行してください:

sudo systemctl restart nginx

FastAPIのroot-pathの変更

Nginxの設定を変更した後、FastAPI側の設定も調整する必要があります。

これには、FastAPIアプリケーションが起動されているPythonファイル(通常はmain.py)にroot_pathを指定することが含まれます。

main.pyファイルを以下のように編集してください(必要なところ以外は省略してます)。

main.py
import FastAPI

app = FastAPI(root_path='/subdirectory_name')

ここで、root_pathには先ほどnginxの設定で使用したサブディレクトリのパスを指定します。

これにより、FastAPIアプリケーションが正しいパスでリクエストを受け取ることができるようになります。

これらの変更を行った後、FastAPIアプリケーションを起動すれば、指定したサブディレクトリからAPIにアクセスできるようになるはずです。