toolkitbox

~/ / Artikel AI / LLM lokal di VPS / Pasang nginx di depan Ollama: autentikasi dasar, HTTPS, dan pengaturan streaming

Pasang nginx di depan Ollama: autentikasi dasar, HTTPS, dan pengaturan streaming

Secara bawaan, Ollama mendengarkan di server itu sendiri, dan itulah tempat yang paling aman baginya. Ketika mesin lain perlu mengaksesnya, FAQ Ollama merujuk ke server proxy seperti nginx. Artikel ini menyusun konfigurasi tersebut berdasarkan dokumentasi nginx: kata sandi, HTTPS, pengaturan yang penting untuk jawaban yang dialirkan, dan firewall yang menutup pintu-pintu lainnya.

Terbit: · 5 menit baca · Diperiksa terhadap dokumentasi resmi Ollama dan nginx pada 2026-10-26. Nilai bawaan direktif bergantung pada versi nginx, jadi periksa versi yang Anda jalankan.

Isi FAQ Ollama

FAQ Ollama menyebutkan bahwa Ollama menjalankan server HTTP dan dapat dibuka ke luar menggunakan server proxy seperti Nginx. Contohnya mendengarkan di port 80, menetapkan server_name, meneruskan permintaan dengan proxy_pass http://localhost:11434, dan mengatur header Host menjadi localhost:11434.

Halaman FAQ yang kami periksa tidak menjelaskan autentikasi apa pun untuk server Ollama. Karena itu kata sandi harus berasal dari proxy di depannya. Ollama secara bawaan terikat ke 127.0.0.1 port 11434, sehingga nginx di server yang sama dapat menjangkaunya tanpa mengubah alamat tersebut.

Kata sandi dengan autentikasi dasar

ngx_http_auth_basic_module membatasi akses dengan memeriksa nama pengguna dan kata sandi. Dua direktif yang bekerja di sini: auth_basic, yang string-nya dipakai sebagai realm dan nilai bawaannya off, serta auth_basic_user_file, yang menunjuk file kata sandi.

DirektifNilai bawaanYang dikatakan dokumentasi
auth_basic string | off;offParameternya dipakai sebagai realm autentikasi. Nilai off membatalkan pengaturan yang diwarisi dari tingkat sebelumnya.
auth_basic_user_file file;tidak adaFile tersebut berisi satu entri name:password per baris, dan baris yang diawali # adalah komentar.
  • Jenis kata sandi yang didukung: kata sandi terenkripsi crypt() dan hash apr1, keduanya dibuat dengan utilitas htpasswd dari Apache atau dengan openssl passwd.
  • Sintaks {SCHEME}data juga didukung. Halaman itu menyatakan bahwa PLAIN hanyalah contoh dan tidak boleh dipakai, dan bahwa SHA, yaitu SHA-1 tanpa salt, juga tidak boleh dipakai karena rentan terhadap serangan rainbow table. SSHA adalah SHA-1 dengan salt.
  • Contoh dari dokumentasi: location / { auth_basic "closed site"; auth_basic_user_file conf/htpasswd; }

Halaman itu menyebut htpasswd dan openssl passwd tetapi tidak memberikan perintahnya. Bentuk yang umum dipakai, yang merupakan buatan kami dan bukan dari halaman tersebut, adalah htpasswd -c /etc/nginx/ollama.htpasswd alice, yang meminta kata sandi, dan openssl passwd -apr1, yang mencetak hash untuk ditempelkan setelah nama pengguna dan tanda titik dua.

Mengamankan dengan HTTPS

Pembacaan kami, bukan pernyataan dari dokumen: autentikasi dasar mengirim kata sandi pada setiap permintaan, jadi gunakan hanya di balik HTTPS. Menurut dokumentasi nginx, sebuah server memerlukan parameter ssl pada soket yang mendengarkan, serta lokasi sertifikat dan kunci privat.

DirektifContoh dari dokumentasi
listenlisten 443 ssl;
server_nameserver_name www.example.com;
ssl_certificatessl_certificate www.example.com.crt;
ssl_certificate_keyssl_certificate_key www.example.com.key;
  • Secara bawaan nginx memakai ssl_protocols TLSv1.2 TLSv1.3 dan ssl_ciphers HIGH:!aNULL:!MD5, sehingga mengatur keduanya secara eksplisit pada umumnya tidak diperlukan.
  • Kunci privat sebaiknya disimpan dalam file dengan akses terbatas, tetapi file itu harus dapat dibaca oleh proses master nginx.
  • Jika peramban melaporkan galat untuk sertifikat dari otoritas ternama, server mungkin perlu mengirim sertifikat perantara. Sertifikat server harus muncul sebelum sertifikat berantai dalam file gabungan, jika tidak nginx gagal dimulai dengan galat key values mismatch.
  • Halaman memulai dari Let's Encrypt menyatakan bahwa jika penyedia Anda tidak mengurus sertifikat untuk Anda dan Anda dapat mengelola server sendiri, Anda dapat menjalankan klien ACME, dan bahwa Let's Encrypt merekomendasikan Certbot untuk kebanyakan orang.

Pengaturan untuk jawaban yang dialirkan dan lambat

Sebuah model menulis jawabannya sepotong demi sepotong, dan potongan pertama bisa lama tiba, misalnya saat model besar dimuat ke memori. Tiga pengaturan nginx menentukan bagaimana hal ini terlihat dari luar.

DirektifNilai bawaanYang dikatakan dokumentasi
proxy_bufferingonKetika buffering dinonaktifkan, respons diteruskan ke klien secara sinkron, segera setelah diterima. Ketika diaktifkan, nginx menyimpan respons ke dalam buffer terlebih dahulu.
proxy_read_timeout60sTimeout hanya ditetapkan di antara dua operasi baca yang berurutan, bukan untuk seluruh respons. Jika server yang di-proxy tidak mengirim apa pun dalam waktu ini, koneksi ditutup.
proxy_http_version1.1 sejak nginx 1.29.7Sebelum 1.29.7 nilai bawaannya adalah 1.0. Versi 1.1 atau 2 direkomendasikan untuk koneksi keepalive.

Pembacaan kami, bukan pernyataan dari dokumen: agar jawaban terlihat muncul saat ditulis, matikan proxy_buffering untuk location Ollama, dan jika model bisa diam lebih dari satu menit saat dimuat, naikkan proxy_read_timeout. Menetapkan proxy_http_version 1.1 secara eksplisit tidak berbahaya di versi mana pun.

Menyatukan semuanya

Konfigurasi ini menggabungkan direktif di atas untuk satu nama server. Ini adalah susunan kami dari direktif yang terdokumentasi, jadi ujilah dengan nginx -t sebelum Anda memuat ulang.

BarisAlasan
server {satu blok server untuk nama Ollama
listen 443 ssl;HTTPS
server_name ollama.example.com;nama Anda sendiri
ssl_certificate /etc/ssl/ollama.crt;sertifikat, dengan sertifikat perantara setelahnya
ssl_certificate_key /etc/ssl/ollama.key;kunci privat, hanya dapat dibaca sesuai kebutuhan
auth_basic "ollama";mengaktifkan kata sandi
auth_basic_user_file /etc/nginx/ollama.htpasswd;tempat pengguna disimpan
location / {semuanya diarahkan ke Ollama
proxy_pass http://localhost:11434;dari FAQ Ollama
proxy_set_header Host localhost:11434;dari FAQ Ollama
proxy_http_version 1.1;direkomendasikan untuk keepalive
proxy_buffering off;agar jawaban dialirkan
proxy_read_timeout 300s;mengizinkan potongan pertama yang lambat
}akhir location
}akhir server

Tutup pintu-pintu lainnya

Proxy hanya berguna jika orang tidak dapat menjangkau Ollama atau aplikasi di baliknya lewat jalan lain. Ollama tetap berada di alamat bawaannya, dan firewall hanya mengizinkan alamat yang Anda pakai.

TugasPerintah dari dokumentasi Ubuntu
Mengaktifkan firewallsudo ufw enable
Mengizinkan sebuah portsudo ufw allow 22
Mengizinkan satu alamat ke satu portsudo ufw allow proto tcp from 192.168.0.2 to any port 22
Mengizinkan satu subnet penuhganti alamat dengan 192.168.0.0/24
Memeriksa statussudo ufw status

Halaman Ubuntu menyatakan bahwa UFW pada awalnya dinonaktifkan. Halaman itu tidak memuat peringatan tentang terkunci dari SSH. Rekomendasi kami: izinkan port SSH Anda sebelum mengaktifkan firewall pada server yang Anda akses dari jarak jauh, dan izinkan port 443 hanya dari alamat yang membutuhkannya.

Sumber

Baca selanjutnya