Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "HI.AI Members" các nội dung bạn quan tâm.

Bài 6. Reverse proxy qua Nginx và lớp xác thực trung gian

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 chatbot
https://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:11434
 

Vì 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 localhost
 

API 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
↓ HTTPS
Nginx

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.