~/tools / ローカルLLMをサーバーで動かす / Ollama nginx Config Generator

Ollama nginx Config Generator — Ollama を守る nginx 設定を作る

Ollama をプロキシの背後に置く nginx の server ブロックを作ります。手元の証明書による HTTPS、ポート 80 からのリダイレクト、Basic 認証によるパスワード、アドレスの許可リスト、そして生成された答えが書かれたそばから届くようにする設定を指定できます。公式の Ollama FAQ にあるプロキシの例を出発点とし、nginx のドキュメントにあるディレクティブだけを使います。入力した内容はブラウザの外に出ません。

サーバー
接続できる人

パスワードと許可リストの両方を使うと、リクエストは両方を通る必要があります(nginx の satisfy の既定値は all です)。

ストリーミングと上限

nginx の設定

/etc/nginx/conf.d/ollama.conf として保存します。ディレクティブの組み合わせは当サイト独自のものなので、リロードする前に必ず nginx -t を実行してください。

server {
    listen 80;
    server_name ollama.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name ollama.example.com;

    ssl_certificate /etc/ssl/ollama.crt;
    ssl_certificate_key /etc/ssl/ollama.key;

    auth_basic "ollama";
    auth_basic_user_file /etc/nginx/ollama.htpasswd;

    location / {
        proxy_pass http://localhost:11434;
        proxy_set_header Host localhost:11434;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_read_timeout 300s;
    }
}

コマンド

htpasswd はパスワードを尋ねます。-c オプションは新しいファイルを作り、既存のファイルは書き換えられるため、2人目のユーザーを追加するときは付けないでください。Ubuntu では、htpasswd は apache2-utils パッケージに入っています。

sudo htpasswd -c /etc/nginx/ollama.htpasswd alice
sudo nginx -t
sudo nginx -s reload

ディレクティブと既定値は、2026-11-03 時点の nginx のドキュメントと Ollama FAQ のプロキシの例に記載されているとおりです。 Ollama FAQ: プロキシサーバー / nginx: ngx_http_proxy_module

すべてブラウザの中で処理します。入力した内容はどこにも送信されません。

Ollama は既定ではサーバー自身でしか待ち受けず、Ollama FAQ にも認証についての記載はありません。別のマシンから接続する必要があるときは、FAQ が nginx のようなプロキシサーバーを案内しており、http://localhost:11434 にリクエストを転送して Host ヘッダーを localhost:11434 にする例が載っています。このツールは、その例に nginx のドキュメントにあるディレクティブを加えて組み立てます。証明書と鍵を使う listen 443 ssl、HTTPS へリダイレクトするポート 80 の server、パスワードファイルを使う auth_basic、アドレスを制限する allow と deny、client_max_body_size、proxy_http_version 1.1、ストリーミングのための proxy_buffering off、最初の答えが遅いときのための proxy_read_timeout です。この組み合わせはドキュメントのひとつの例ではなく私たち独自のものなので、テストしました。出力は、公式の nginx 1.29.8 イメージと Ubuntu 24.04 の nginx 1.24.0 の両方で nginx -t に通りました。また nginx 1.29.8 を通して、正しいパスワードのときだけ Ollama 0.40.11 に接続できること、ストリーミングされた答えが81個に分かれて届くこと、許可リストの外のアドレスからは 403 が返ることを確認しました。

このツールの計算部分は、オープンソース(MIT ライセンス)で公開しています。 github.com/seigo5555/toolkitbox-lib/src/ollama-nginx.ts

こんな時に使う

  • VPS 上の Ollama に、ノートパソコンや別のサーバーから、パスワードと HTTPS を付けて接続する
  • パスワードに加えて、職場や自宅のアドレスだけが Ollama に接続できるようにする
  • 答えがまとめて届く問題や、大きなモデルの読み込み中に接続が切れる問題を直す

使い方

  1. ドメイン名を入力します。Ollama が同じサーバーのポート 11434 にない場合は、nginx が転送する先のアドレスも入力します。HTTPS をオンにして、証明書と秘密鍵のパスを入力します。
  2. アクセスの制限方法を選びます。パスワード、許可するアドレスのリスト、またはその両方です。両方を選ぶと、nginx の satisfy ディレクティブの既定値が all であるため、リクエストは両方を通る必要があります。ストリーミングはオンのままにし、モデルの読み込みに時間がかかる場合はタイムアウトを延ばしてください。
  3. 設定を /etc/nginx/conf.d/ollama.conf として保存し、表示される htpasswd コマンドでパスワードファイルを作ります。続けて nginx -t を実行し、nginx をリロードします。

FAQ

なぜ Host ヘッダーはいつも localhost:11434 なのですか?

Ollama FAQ の例がそう設定しているためです。Ollama は、知らないホストを Host ヘッダーに含むリクエストを拒否します。Ollama 0.40.11 で試したところ、Host: ollama.example.com は 403 になり、localhost:11434 と localhost:9999 は 200 になりました。localhost:11434 を送れば、訪問者がどの名前でアクセスしても、リクエストは受け付けられます。

なぜ proxy_buffering を off にするのですか?

Ollama は答えを少しずつストリーミングします。nginx のドキュメントによると、バッファリングを無効にすると、レスポンスは受け取るそばから同期的にクライアントへ渡されます。有効にすると、nginx はまずレスポンスをバッファに保存します。off にしたテストでは、答えが約6秒かけて81個に分かれて届きました。

proxy_read_timeout は何を変えますか?

nginx のドキュメントによると、このタイムアウトの既定値は60秒で、レスポンス全体ではなく連続する2回の読み取りの間だけに設定されます。その間にプロキシ先のサーバーが何も送らなければ、接続が閉じられます。ドキュメントの記述ではなく私たちの解釈ですが、小さなサーバーでモデルをメモリに読み込んでいる間は、1分以上何も返さないことがあるため、値を大きくすると接続が閉じられるのを避けられます。

nginx はどのファイルを読み込みますか?

公式の nginx イメージも Ubuntu 24.04 の nginx パッケージも、nginx.conf の http ブロックの中で /etc/nginx/conf.d/*.conf を読み込むため、そこに保存したファイルが使われます。他の環境では別のディレクトリが使われることがあります。nginx.conf の include の行を確認してください。

パスワードファイルはどう作りますか?

nginx のドキュメントには、Apache の htpasswd ユーティリティと openssl passwd が挙げられていますが、コマンドは載っていません。このツールは、入力したファイル名とユーザー名で htpasswd -c を表示します。Ubuntu では、htpasswd は apache2-utils パッケージに入っています。Apache のドキュメントによると、-c はファイルを作成するもので、既存のファイルは書き換えられて内容が切り詰められます。2人目のユーザーを追加するときは、-c を付けないでください。

サーバーに何か送信されますか?

いいえ。設定はブラウザの中で組み立てています。

関連する記事

関連ツール