~/tools / Lokalny LLM na własnym serwerze / Ollama nginx Config Generator

Ollama nginx Config Generator — Zbuduj konfigurację nginx dla Ollama: HTTPS, basic auth, lista dozwolonych adresów, strumieniowanie

Zbuduj blok server nginx, który stawia Ollama za proxy: HTTPS z Twoim certyfikatem, przekierowanie z portu 80, hasło przez uwierzytelnianie podstawowe, listę dozwolonych adresów oraz ustawienia, dzięki którym odpowiedzi strumieniowane docierają w miarę pisania. Punktem wyjścia jest przykład proxy z oficjalnego FAQ Ollama, a użyte są wyłącznie dyrektywy z dokumentacji nginx. Nic nie opuszcza Twojej przeglądarki.

Serwer
Kto ma dostęp

Przy haśle i liście dozwolonych adresów żądanie musi spełnić oba warunki (satisfy w nginx domyślnie ma wartość all).

Strumieniowanie i limity

Konfiguracja nginx

Zapisz ją jako /etc/nginx/conf.d/ollama.conf. Kombinacja dyrektyw jest nasza, więc przed przeładowaniem zawsze uruchom 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;
    }
}

Polecenia

htpasswd zapyta o hasło. Jego opcja -c tworzy nowy plik, a istniejący plik jest przepisywany, więc pomiń ją, gdy dodajesz drugiego użytkownika. W Ubuntu htpasswd znajduje się w pakiecie apache2-utils.

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

Dyrektywy i wartości domyślne zgodne z dokumentacją nginx i przykładem proxy z FAQ Ollama, sprawdzone dnia 2026-11-03. FAQ Ollama: serwer proxy / nginx: ngx_http_proxy_module

Wszystko dzieje się w Twojej przeglądarce. Nic, co wpiszesz, nie jest nigdzie wysyłane.

Ollama domyślnie nasłuchuje tylko na samym serwerze, a FAQ Ollama nie opisuje dla niej żadnego uwierzytelniania. Gdy musi się z nią połączyć inny komputer, FAQ wskazuje serwer proxy, taki jak nginx, z przykładem, który przekazuje żądania na http://localhost:11434 i ustawia nagłówek Host na localhost:11434. To narzędzie rozbudowuje ten przykład o dyrektywy z dokumentacji nginx: listen 443 ssl z certyfikatem i kluczem, serwer na porcie 80 przekierowujący na HTTPS, auth_basic z plikiem haseł, allow i deny dla adresów, client_max_body_size, proxy_http_version 1.1, proxy_buffering off dla strumieniowania oraz proxy_read_timeout na wolną pierwszą odpowiedź. Ta kombinacja jest nasza, a nie pojedynczym przykładem z dokumentacji, więc ją przetestowaliśmy: wynik przeszedł nginx -t na oficjalnym obrazie nginx 1.29.8 i na nginx 1.24.0 z Ubuntu 24.04, a przez nginx 1.29.8 dotarliśmy do Ollama 0.40.11 tylko z właściwym hasłem, zobaczyliśmy odpowiedź strumieniową docierającą w 81 kawałkach i dostaliśmy 403 z adresu spoza listy dozwolonych adresów.

Główna logika tego narzędzia jest otwartoźródłowa, na licencji MIT. github.com/seigo5555/toolkitbox-lib/src/ollama-nginx.ts

Zastosowania

  • Połączyć się z Ollama na VPS-ie z laptopa lub innego serwera, z hasłem i HTTPS
  • Wpuszczać do Ollama tylko adres biura lub domu, oprócz hasła
  • Naprawić odpowiedzi, które docierają naraz, albo połączenia zamykane, gdy duży model jeszcze się ładuje

Jak używać

  1. Wpisz nazwę domeny i, jeśli Ollama nie działa na tym samym serwerze na porcie 11434, adres, na który nginx ma przekazywać żądania. Włącz HTTPS i wpisz ścieżki certyfikatu i klucza prywatnego.
  2. Wybierz sposób ograniczenia dostępu: hasło, listę dozwolonych adresów albo oba. Przy obu żądanie musi spełnić oba warunki, ponieważ dyrektywa satisfy w nginx domyślnie ma wartość all. Zostaw strumieniowanie włączone i zwiększ limit czasu, jeśli Twój model długo się ładuje.
  3. Zapisz konfigurację jako /etc/nginx/conf.d/ollama.conf, utwórz plik haseł pokazanym poleceniem htpasswd, a następnie uruchom nginx -t i przeładuj nginx.

FAQ

Dlaczego nagłówek Host to zawsze localhost:11434?

Tak ustawia go przykład z FAQ Ollama. Ollama odrzuca żądania, których nagłówek Host wskazuje nieznany jej host: w naszym teście z Ollama 0.40.11 Host: ollama.example.com dostał 403, a localhost:11434 i nawet localhost:9999 dostały 200. Wysyłanie localhost:11434 sprawia, że żądanie jest akceptowane niezależnie od nazwy użytej przez odwiedzającego.

Dlaczego wyłączać proxy_buffering?

Ollama strumieniuje odpowiedź kawałek po kawałku. Dokumentacja nginx mówi, że gdy buforowanie jest wyłączone, odpowiedź jest przekazywana klientowi synchronicznie, od razu po otrzymaniu; gdy jest włączone, nginx najpierw zapisuje odpowiedź w buforach. Przy wyłączonym buforowaniu nasza testowa odpowiedź dotarła w 81 kawałkach w ciągu około sześciu sekund.

Co zmienia proxy_read_timeout?

Dokumentacja nginx mówi, że ten limit czasu, domyślnie 60 sekund, dotyczy tylko przerwy między dwoma kolejnymi odczytami, a nie całej odpowiedzi, i że połączenie jest zamykane, jeśli serwer za proxy nic w tym czasie nie wyśle. Nasza interpretacja, a nie stwierdzenie z dokumentacji: model, który wciąż ładuje się do pamięci, może na małym serwerze milczeć dłużej niż minutę, więc wyższa wartość pozwala uniknąć zamkniętego połączenia.

Jaki plik czyta nginx?

Zarówno oficjalny obraz nginx, jak i pakiet nginx z Ubuntu 24.04 dołączają /etc/nginx/conf.d/*.conf wewnątrz bloku http w nginx.conf, więc zapisany tam plik jest czytany. Inne instalacje mogą używać innego katalogu; sprawdź wiersze include w swoim nginx.conf.

Jak utworzyć plik haseł?

Dokumentacja nginx wymienia narzędzie htpasswd z Apache oraz openssl passwd, nie podając poleceń. Narzędzie pokazuje htpasswd -c z podanym przez Ciebie plikiem i nazwą użytkownika. W Ubuntu htpasswd znajduje się w pakiecie apache2-utils. Dokumentacja Apache mówi, że -c tworzy plik, a istniejący plik jest przepisywany i obcinany, więc pomiń -c, gdy dodajesz drugiego użytkownika.

Czy cokolwiek jest wysyłane na serwer?

Nie. Konfiguracja jest składana w Twojej przeglądarce.

Powiązane artykuły

Powiązane