1. Đặt vấn đề
Khi triển khai AI local, nhiều trường hợp Ollama hoặc API chạy tốt trên máy chủ nhưng máy khác trong LAN không gọi được. Ví dụ, trên server chạy curl 127.0.0.1 được, nhưng từ máy Drupal, QMS hoặc máy người dùng lại không truy cập được. Đây là lỗi phổ biến liên quan đến binding địa chỉ, firewall, port, reverse proxy, cấu hình network hoặc chính sách bảo mật.
Cần phân biệt rõ: không gọi được Ollama trực tiếp chưa chắc là lỗi, vì về nguyên tắc Ollama không nên mở trực tiếp cho LAN hoặc Internet. Ứng dụng khác nên gọi API trung gian hoặc Nginx reverse proxy.
2. Dấu hiệu nhận biết
- Gọi API trên server được, từ máy khác không được.
- Trình duyệt báo connection refused hoặc timeout.
curl http://server-ai:portkhông trả về.- Website tích hợp AI báo lỗi kết nối.
- Nginx báo upstream error.
- API chỉ listen trên
127.0.0.1. - Firewall chặn port.
3. Kiểm tra API đang listen ở đâu
Trên server AI:
ss -lntpTìm port liên quan, ví dụ:
ss -lntp | grep 8000ss -lntp | grep 11434
Nếu service chỉ listen 127.0.0.1, máy khác không gọi được. Nếu cần cho LAN gọi API trung gian, service phải listen 0.0.0.0 hoặc IP LAN, hoặc đi qua Nginx.
4. Kiểm tra từ máy khác
Từ máy khác trong LAN:
ping <ip-server-ai>curl http://<ip-server-ai>:<port>/health
Nếu ping không được, kiểm tra network. Nếu ping được nhưng curl không được, kiểm tra port/firewall/service.
5. Kiểm tra firewall
Trên Ubuntu có thể dùng:
sudo ufw statusNếu dùng iptables/nftables, kiểm tra tương ứng. Cần mở port API trung gian nếu có chủ đích. Không nên mở cổng Ollama trực tiếp nếu không cần.
6. Kiểm tra Nginx reverse proxy
Nếu dùng Nginx, kiểm tra:
sudo nginx -tsudo systemctl status nginx
Log:
tail -n 100 /var/log/nginx/error.logCần xem upstream có đúng IP/port không, API backend có chạy không, timeout có phù hợp không.
7. Phân biệt API trung gian và Ollama
Mô hình đúng:
Máy khác trong LAN → Nginx/API trung gian → Ollama localhostKhông nên:
Máy khác trong LAN → Ollama 11434 trực tiếpNếu cần test Ollama từ server, dùng localhost. Nếu cần tích hợp từ Drupal/QMS, hãy tạo API trung gian.
8. Kiểm tra hostname/DNS nội bộ
Nếu gọi bằng tên máy, cần kiểm tra:
getent hosts ten-serverNếu DNS không phân giải, dùng IP hoặc cấu hình DNS/hosts nội bộ.
9. Nguyên nhân thường gặp
- Service chỉ bind localhost.
- Firewall chặn port.
- Sai IP server.
- Sai port.
- Nginx cấu hình sai upstream.
- API chưa chạy.
- Docker không expose port.
- DNS nội bộ lỗi.
- Máy khác không cùng VLAN/subnet.
- Proxy nội bộ chặn.
- TLS/certificate lỗi nếu dùng HTTPS.
10. Cách xử lý an toàn
- Chỉ mở port API trung gian cần thiết.
- Dùng Nginx reverse proxy.
- Bật xác thực.
- Giới hạn IP nếu cần.
- Không expose Ollama.
- Có endpoint
/healthđể kiểm tra. - Ghi log request.
- Kiểm tra từ máy Drupal/QMS thực tế.
11. Kết luận
Không gọi được API từ máy khác trong LAN thường do binding, firewall, Nginx, Docker hoặc DNS. Cần kiểm tra theo thứ tự: service listen ở đâu, port có mở không, firewall có chặn không, Nginx có proxy đúng không, máy khác có nhìn thấy server không. Trong bệnh viện, nên để máy khác gọi API trung gian có xác thực, không gọi trực tiếp Ollama.
- Đăng nhập để gửi ý kiến