1. Đặt vấn đề
Trong triển khai thực tế, bệnh viện thường cần đưa dịch vụ AI lên giao diện web hoặc tích hợp với hệ thống nội bộ. Nginx có thể được dùng làm reverse proxy để định tuyến request, cấu hình HTTPS, giới hạn kích thước request, kiểm soát timeout và kết nối đến API trung gian. Tuy nhiên, Nginx không nên chỉ proxy trực tiếp từ Internet đến Ollama. Cần có lớp xác thực và xử lý trung gian.
Reverse proxy đúng cách giúp hệ thống AI local an toàn hơn, dễ quản trị hơn và có thể tích hợp với nhiều ứng dụng.
2. Reverse proxy là gì?
Reverse proxy là lớp đứng trước backend service. Người dùng truy cập domain hoặc URL của hệ thống; Nginx nhận request và chuyển đến backend phù hợp. Ví dụ:
https://ai.noibo.benhvien.vn/chat → API chatbothttps://ai.noibo.benhvien.vn/api → API trung gian
Backend có thể chạy trên localhost hoặc mạng nội bộ.
3. Không proxy trực tiếp đến Ollama
Không nên cấu hình:
Nginx public → Ollama:11434Vì như vậy người dùng có thể gọi thẳng API Ollama qua Nginx. Cần cấu hình:
Nginx → Ứng dụng/API trung gian → Ollama localhostAPI trung gian xử lý xác thực, phân quyền, log, RAG và kiểm soát dữ liệu.
4. Vai trò của Nginx
Nginx có thể hỗ trợ:
- HTTPS/TLS.
- Reverse proxy.
- Giới hạn request size.
- Timeout.
- Rate limit cơ bản.
- IP allowlist.
- Chặn đường dẫn không hợp lệ.
- Header bảo mật.
- Ghi access log.
- Tách route cho nhiều service.
- Proxy WebSocket/SSE nếu streaming.
Nhưng Nginx không thay thế logic phân quyền nghiệp vụ.
5. Lớp xác thực trung gian
Lớp xác thực trung gian có thể là:
- Ứng dụng Drupal.
- API Python/FastAPI.
- API PHP/Laravel/Symfony.
- Node.js backend.
- Gateway nội bộ.
- SSO proxy nếu bệnh viện có.
Lớp này xác định người dùng là ai và được làm gì.
6. Mô hình đề xuất
Người dùng↓ HTTPSNginx↓Web/App/API trung gian↓RAG/FAISS/Metadata/Permission↓Ollama localhost
Trong mô hình này, Ollama không tiếp xúc trực tiếp với người dùng.
7. Cấu hình bảo mật cần chú ý
Ở mức nguyên tắc, cần:
- Bật HTTPS nếu truy cập qua mạng không hoàn toàn tin cậy.
- Không expose cổng Ollama.
- Giới hạn upload file.
- Đặt timeout phù hợp cho request AI.
- Chặn method không cần thiết.
- Không trả thông tin lỗi backend chi tiết.
- Cấu hình log nhưng tránh ghi dữ liệu nhạy cảm trong URL.
- Chỉ cho Nginx truy cập backend nội bộ.
- Tách môi trường test và production.
8. Streaming qua Nginx
Nếu chatbot dùng streaming, Nginx cần cấu hình phù hợp để không buffer toàn bộ response. Tuy nhiên, với dữ liệu nhạy cảm, streaming cần cân nhắc vì response hiển thị ngay trước khi kiểm tra toàn bộ đầu ra.
Có thể dùng streaming cho tác vụ rủi ro thấp, còn tác vụ nhạy cảm thì trả response sau khi kiểm soát.
9. IP allowlist
Với API quản trị hoặc API nội bộ, có thể giới hạn IP:
- Chỉ mạng nội bộ.
- Chỉ server Drupal/QMS.
- Chỉ máy quản trị.
- Chặn truy cập từ Internet.
IP allowlist không thay thế xác thực, nhưng là lớp bảo vệ bổ sung.
10. Log tại Nginx và log ứng dụng
Nginx access log giúp biết request từ đâu đến, nhưng không đủ cho audit AI. Ứng dụng cần log thêm:
- User.
- Role.
- Tác vụ.
- Model.
- Dữ liệu nguồn.
- Kết quả.
- Lỗi.
Không nên chỉ dựa vào log Nginx.
11. Kết luận
Nginx là lớp reverse proxy hữu ích để triển khai AI local qua web, nhưng không được proxy trực tiếp đến Ollama như một service công khai. Kiến trúc đúng là Nginx đứng trước ứng dụng hoặc API trung gian có xác thực, phân quyền, log và kiểm soát dữ liệu. Nginx bảo vệ lớp giao tiếp; API trung gian bảo vệ logic nghiệp vụ; Ollama chỉ là backend chạy model.
- Đăng nhập để gửi ý kiến