~/tools / Локальная LLM на своём сервере / Ollama nginx Config Generator

Ollama nginx Config Generator — Соберите конфигурацию nginx для Ollama: HTTPS, базовая аутентификация, список адресов, потоковая передача

Соберите блок server для nginx, который ставит Ollama за прокси: HTTPS с вашим сертификатом, перенаправление с порта 80, пароль через базовую аутентификацию, список разрешённых адресов и настройки, благодаря которым потоковые ответы приходят по мере написания. За основу взят пример прокси из официального FAQ Ollama, используются только директивы из документации nginx. Данные не покидают ваш браузер.

Сервер
Кто имеет доступ

При пароле и списке разрешённых адресов запрос должен пройти обе проверки (satisfy в nginx по умолчанию равен 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 создаёт новый файл, а существующий файл перезаписывается, поэтому не указывайте его, когда добавляете второго пользователя. В Ubuntu htpasswd входит в пакет apache2-utils.

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

Директивы и значения по умолчанию приведены по документации nginx и примеру прокси из FAQ Ollama; проверено 2026-11-03. FAQ Ollama: прокси-сервер / nginx: ngx_http_proxy_module

Всё выполняется в вашем браузере. Введённые данные никуда не отправляются.

По умолчанию Ollama слушает только на самом сервере, а FAQ Ollama не описывает для неё никакой аутентификации. Если к ней должен подключаться другой компьютер, FAQ указывает на прокси-сервер вроде nginx и даёт пример, который передаёт запросы на http://localhost:11434 и задаёт заголовок Host равным localhost:11434. Этот инструмент развивает пример директивами из документации nginx: listen 443 ssl с сертификатом и ключом, сервер на порту 80 с перенаправлением на HTTPS, auth_basic с файлом паролей, allow и deny для адресов, client_max_body_size, proxy_http_version 1.1, proxy_buffering off для потоковой передачи и proxy_read_timeout для медленного первого ответа. Это сочетание наше, а не один пример из документации, поэтому мы его проверили: результат прошёл nginx -t на официальном образе nginx 1.29.8 и на nginx 1.24.0 из Ubuntu 24.04, а через nginx 1.29.8 мы подключились к Ollama 0.40.11 только с правильным паролем, увидели потоковый ответ, пришедший в 81 части, и получили 403 с адреса вне списка разрешённых адресов.

Основная логика этого инструмента открыта под лицензией MIT. github.com/seigo5555/toolkitbox-lib/src/ollama-nginx.ts

Когда пригодится

  • Подключаться к Ollama на VPS с ноутбука или другого сервера, с паролем и HTTPS
  • Пускать к Ollama только адрес вашего офиса или дома, в дополнение к паролю
  • Исправить ответы, которые приходят все сразу, и соединения, которые закрываются, пока большая модель ещё загружается

Как пользоваться

  1. Введите доменное имя и, если Ollama работает не на том же сервере на порту 11434, адрес, на который nginx должен передавать запросы. Включите HTTPS и укажите пути к сертификату и закрытому ключу.
  2. Выберите способ ограничения доступа: пароль, список разрешённых адресов или оба. При обоих запрос должен пройти обе проверки, потому что директива satisfy в nginx по умолчанию равна all. Оставьте потоковую передачу включённой и увеличьте тайм-аут, если ваша модель долго загружается.
  3. Сохраните конфигурацию как /etc/nginx/conf.d/ollama.conf, создайте файл паролей показанной командой htpasswd, затем выполните nginx -t и перезагрузите nginx.

Вопросы

Почему заголовок Host всегда localhost:11434?

Так задаётся в примере из FAQ Ollama. Ollama отклоняет запросы, у которых в заголовке Host указан неизвестный ей хост: при проверке на Ollama 0.40.11 Host: ollama.example.com получил 403, а localhost:11434 и даже localhost:9999 получили 200. Если отправлять localhost:11434, запрос принимается независимо от того, какое имя использовал посетитель.

Зачем выключать proxy_buffering?

Ollama передаёт ответ потоком, по частям. В документации nginx сказано, что при выключенной буферизации ответ передаётся клиенту синхронно, сразу по мере получения; при включённой nginx сначала сохраняет ответ в буферах. При выключенной буферизации наш тестовый ответ пришёл в 81 части примерно за шесть секунд.

Что меняет proxy_read_timeout?

В документации nginx сказано, что этот тайм-аут, по умолчанию 60 секунд, действует только между двумя последовательными операциями чтения, а не на весь ответ, и что соединение закрывается, если проксируемый сервер ничего не присылает за это время. Наше прочтение, а не утверждение из документации: модель, которая ещё загружается в память, может на небольшом сервере молчать дольше минуты, поэтому более высокое значение помогает избежать закрытого соединения.

Какой файл читает nginx?

И официальный образ nginx, и пакет nginx из Ubuntu 24.04 подключают /etc/nginx/conf.d/*.conf внутри блока http в nginx.conf, поэтому сохранённый там файл читается. В других установках каталог может быть другим; проверьте строки include в вашем nginx.conf.

Как создать файл паролей?

В документации nginx названы утилита htpasswd из Apache и openssl passwd, но команды не приведены. Инструмент показывает htpasswd -c с введённым вами файлом и именем пользователя. В Ubuntu htpasswd входит в пакет apache2-utils. В документации Apache сказано, что -c создаёт файл, а существующий файл перезаписывается и усекается, поэтому не указывайте -c, когда добавляете второго пользователя.

Отправляется ли что-нибудь на сервер?

Нет. Конфигурация собирается в вашем браузере.

Похожие статьи

Похожие