~/tools / Menjalankan LLM lokal di server Anda / Ollama nginx Config Generator

Ollama nginx Config Generator — Buat konfigurasi nginx untuk Ollama: HTTPS, autentikasi dasar, daftar izin, streaming

Buat blok server nginx yang menempatkan Ollama di belakang proxy: HTTPS dengan sertifikat Anda, pengalihan dari port 80, kata sandi dengan autentikasi dasar, daftar alamat yang diizinkan, dan pengaturan agar jawaban yang di-stream tiba begitu ditulis. Dimulai dari contoh proxy di FAQ resmi Ollama dan hanya memakai direktif dari dokumentasi nginx. Tidak ada data yang keluar dari browser Anda.

Server
Siapa yang dapat menjangkau

Dengan kata sandi dan daftar izin, sebuah permintaan harus lolos keduanya (satisfy pada nginx secara default bernilai all).

Streaming dan batas

Konfigurasi nginx

Simpan sebagai /etc/nginx/conf.d/ollama.conf. Kombinasi direktifnya buatan kami, jadi selalu jalankan nginx -t sebelum memuat ulang.

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;
    }
}

Perintah

htpasswd menanyakan kata sandi. Opsi -c-nya membuat file baru, dan file yang sudah ada akan ditulis ulang, jadi hilangkan opsi itu saat menambahkan pengguna kedua. Di Ubuntu, htpasswd ada dalam paket apache2-utils.

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

Direktif dan default sesuai dokumentasi nginx dan contoh proxy di FAQ Ollama, diperiksa pada 2026-11-03. Ollama FAQ: server proxy / nginx: ngx_http_proxy_module

Semua dilakukan di browser Anda. Tidak ada yang Anda masukkan dikirim ke mana pun.

Ollama secara default hanya mendengarkan di server itu sendiri, dan FAQ Ollama tidak menjelaskan autentikasi apa pun untuknya. Saat mesin lain perlu menjangkaunya, FAQ menunjuk ke server proxy seperti nginx, dengan contoh yang meneruskan permintaan ke http://localhost:11434 dan mengatur header Host ke localhost:11434. Alat ini membangun di atas contoh itu dengan direktif dari dokumentasi nginx: listen 443 ssl dengan sertifikat dan kunci, server di port 80 yang mengalihkan ke HTTPS, auth_basic dengan file kata sandi, allow dan deny untuk alamat, client_max_body_size, proxy_http_version 1.1, proxy_buffering off untuk streaming, dan proxy_read_timeout untuk jawaban pertama yang lambat. Kombinasi ini buatan kami, bukan satu contoh tunggal dari dokumen, jadi kami mengujinya: keluarannya lolos nginx -t pada image nginx resmi 1.29.8 dan pada nginx 1.24.0 dari Ubuntu 24.04; lewat nginx 1.29.8 kami hanya bisa menjangkau Ollama 0.40.11 dengan kata sandi yang benar, melihat jawaban yang di-stream tiba dalam 81 potongan, dan mendapat 403 dari alamat di luar daftar yang diizinkan.

Logika utama alat ini bersifat sumber terbuka dengan lisensi MIT. github.com/seigo5555/toolkitbox-lib/src/ollama-nginx.ts

Kapan dipakai

  • Menjangkau Ollama di VPS dari laptop atau server lain, dengan kata sandi dan HTTPS
  • Hanya mengizinkan alamat kantor atau rumah Anda menjangkau Ollama, di samping kata sandi
  • Memperbaiki jawaban yang tiba sekaligus, atau koneksi yang tertutup saat model besar masih dimuat

Cara pakai

  1. Masukkan nama domain dan, jika Ollama tidak berada di server yang sama pada port 11434, alamat tujuan penerusan nginx. Aktifkan HTTPS dan masukkan path sertifikat dan kunci privat Anda.
  2. Pilih cara membatasi akses: kata sandi, daftar alamat yang diizinkan, atau keduanya. Jika keduanya dipakai, sebuah permintaan harus lolos keduanya, karena direktif satisfy nginx secara default bernilai all. Biarkan streaming menyala, dan naikkan timeout jika model Anda lama dimuat.
  3. Simpan konfigurasi sebagai /etc/nginx/conf.d/ollama.conf, buat file kata sandi dengan perintah htpasswd yang ditampilkan, lalu jalankan nginx -t dan muat ulang nginx.

Tanya jawab

Mengapa header Host selalu localhost:11434?

Itulah yang diatur contoh di FAQ Ollama. Ollama menolak permintaan yang header Host-nya menyebut host yang tidak dikenalnya: saat kami menguji Ollama 0.40.11, Host: ollama.example.com mendapat 403, sedangkan localhost:11434 dan bahkan localhost:9999 mendapat 200. Mengirim localhost:11434 membuat permintaan tetap diterima apa pun nama yang dipakai pengunjung.

Mengapa proxy_buffering dimatikan?

Ollama men-stream jawaban sepotong demi sepotong. Dokumentasi nginx menyebutkan bahwa saat buffering dinonaktifkan, respons diteruskan ke klien secara sinkron, segera setelah diterima; saat diaktifkan, nginx menyimpan respons ke buffer terlebih dahulu. Dengan buffering mati, jawaban pada pengujian kami tiba dalam 81 potongan selama sekitar enam detik.

Apa yang diubah proxy_read_timeout?

Dokumentasi nginx menyebutkan bahwa timeout ini, 60 detik secara default, ditetapkan hanya di antara dua pembacaan berturut-turut, bukan untuk seluruh respons, dan koneksi ditutup jika server yang diproksi tidak mengirim apa pun dalam rentang itu. Pembacaan kami, bukan pernyataan dari dokumen: model yang masih dimuat ke memori bisa diam lebih dari satu menit di server kecil, sehingga nilai yang lebih tinggi menghindari koneksi yang tertutup.

File mana yang dibaca nginx?

Baik image nginx resmi maupun paket nginx Ubuntu 24.04 menyertakan /etc/nginx/conf.d/*.conf di dalam blok http pada nginx.conf, sehingga file yang disimpan di sana dibaca. Instalasi lain mungkin memakai direktori yang berbeda; periksa baris include di nginx.conf Anda.

Bagaimana cara membuat file kata sandi?

Dokumentasi nginx menyebut utilitas htpasswd dari Apache dan openssl passwd, tanpa memberikan perintahnya. Alat ini menampilkan htpasswd -c dengan file dan nama pengguna yang Anda masukkan. Di Ubuntu, htpasswd ada dalam paket apache2-utils. Dokumentasi Apache menyebutkan bahwa -c membuat file dan file yang sudah ada akan ditulis ulang dan dipotong, jadi hilangkan -c saat menambahkan pengguna kedua.

Apakah ada yang dikirim ke server?

Tidak. Konfigurasi disusun di browser Anda.

Artikel terkait

Terkait