~/tools / 在自己的伺服器上執行本機 LLM / Ollama nginx Config Generator
Ollama nginx Config Generator — 建立 Ollama 的 nginx 設定:HTTPS、基本驗證、允許清單、串流
建立 nginx 的 server 區塊,把 Ollama 放在代理伺服器後面:使用你自己憑證的 HTTPS、從 80 連接埠的轉址、以基本驗證設定的密碼、位址允許清單,以及讓串流的回答隨寫隨到的設定。它以官方 Ollama FAQ 中的代理範例為起點,只使用 nginx 文件中的指令。輸入的內容不會離開你的瀏覽器。
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 文件與 Ollama FAQ 中的代理範例所載,於 2026-11-03 確認。 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
使用情境
- 從你的筆電或另一台伺服器,以密碼與 HTTPS 連到 VPS 上的 Ollama
- 除了密碼之外,只讓你辦公室或家裡的位址能連到 Ollama
- 修正回答一次全部送達的問題,或大型模型仍在載入時連線就被關閉的問題
使用方法
- 輸入網域名稱;如果 Ollama 不在同一台伺服器的 11434 連接埠,也請輸入 nginx 要轉發到的位址。開啟 HTTPS,並輸入憑證與私密金鑰的路徑。
- 選擇限制存取的方式:密碼、允許的位址清單,或兩者並用。兩者並用時,請求必須同時通過,因為 nginx 的 satisfy 指令預設為 all。請保持串流開啟,如果你的模型載入很久,就調高逾時。
- 將設定存成 /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 關掉?
Ollama 會一段一段地串流回答。nginx 文件說,停用緩衝時,回應會在收到後立即同步傳給用戶端;啟用時,nginx 會先把回應存進緩衝區。關閉後,我們測試的回答在大約六秒內分成 81 段送達。
proxy_read_timeout 會改變什麼?
nginx 文件說,這個逾時預設為 60 秒,只套用在兩次連續讀取之間,而不是整個回應;如果被代理的伺服器在這段時間內什麼都沒有送出,連線就會關閉。我們的解讀,並非文件中的說法:在小型伺服器上,模型仍在載入記憶體時,可能沉默超過一分鐘,所以調高這個值可以避免連線被關閉。
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 會建立檔案,而既有的檔案會被重寫並截斷,所以新增第二位使用者時請不要加 -c。
有任何資料會傳送到伺服器嗎?
不會。設定是在你的瀏覽器中組成的。