Làm thế nào để cấu hình Nginx để hỗ trợ giao thức WebSocket?

WebSocket là một giao thức liên tiếp (persistent) cho phép giao tiếp hai chiều (full-duplex) giữa máy khách và máy chủ thông qua một kết nối duy trì. Đối với các ứng dụng web thời gian thực như trò chuyện trực tuyến, trò chơi trực tuyến, và các ứng dụng tương tác thời gian thực khác, hỗ trợ WebSocket là rất quan trọng. Nginx, một máy chủ web phổ biến, cũng cung cấp khả năng cấu hình để hỗ trợ giao thức WebSocket. Dưới đây là một số bước để cấu hình Nginx để hỗ trợ WebSocket.

Cài đặt phiên bản Nginx hỗ trợ WebSocket

Đảm bảo rằng bạn đang sử dụng phiên bản Nginx hỗ trợ WebSocket. Phiên bản từ 1.3 trở lên được khuyến nghị để có sự hỗ trợ tốt nhất cho WebSocket.

PageSpeed Module | Google for Developers

Cấu hình Nginx để chuyển tiếp yêu cầu WebSocket

Mở tệp cấu hình Nginx và thêm các cấu hình sau trong khối server:

location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

 

Trong đó, http://backend là địa chỉ của máy chủ ứng dụng thực tế mà bạn muốn chuyển tiếp yêu cầu WebSocket tới.

Benchmarking 5 Popular Load Balancers: Nginx, HAProxy, Envoy, Traefik, and  ALB | Loggly

Cấu hình ứng dụng back-end để hỗ trợ WebSocket

Đảm bảo rằng ứng dụng back-end của bạn cũng được cấu hình để hỗ trợ giao thức WebSocket và xử lý các kết nối WebSocket. Điều này phụ thuộc vào ngôn ngữ hoặc framework mà bạn sử dụng.

Khởi động lại Nginx

Sau khi cấu hình hoàn tất, lưu tệp cấu hình và khởi động lại Nginx để áp dụng các thay đổi.

Sau khi hoàn thành các bước trên, Nginx sẽ được cấu hình để chuyển tiếp yêu cầu WebSocket đến ứng dụng back-end của bạn một cách đúng đắn. Bằng cách này, Nginx hoạt động như một cổng (gateway) cho giao thức WebSocket và cho phép giao tiếp hai chiều giữa máy khách và máy chủ thông qua kết nối WebSocket duy trì.

Lưu ý rằng khi sử dụng Nginx làm cổng WebSocket, bạn cũng cần xác minh rằng tường lửa hoặc bất kỳ thiết bị nào ở giữa không cản trở các kết nối WebSocket. Đôi khi, bạn có thể phải cấu hình lại tường lửa hoặc các thiết bị trung gian khác để cho phép lưu lượng WebSocket đi qua.

Setup NGINX For Load Balancer - DEV Community

Tóm lại, để cấu hình Nginx để hỗ trợ giao thức WebSocket, bạn cần thực hiện các bước trên để cho phép Nginx chuyển tiếp yêu cầu WebSocket đến ứng dụng back-end. Việc hỗ trợ WebSocket cho phép bạn xây dựng các ứng dụng web thời gian thực mạnh mẽ và tương tác với khả năng full-duplex giữa máy khách và máy chủ.