Cùng với Apache, Tomcat, Nginx là một web server phổ biến trên HDH Linux. Nó có một tính năng Reverse Proxy được sử dụng như một chương trình cân bằng tải (Load Balancing). Trong bài viết này, vinasupport.com sẽ hướng dẫn các bạn hiểu qua về Reverse Proxy trên Nginx nhé!
Reverse Proxy là gì?
Reverse Proxy được hiểu là một proxy server trung gian giữa Client (máy khách) và Server (máy chủ). Mội yêu cầu (request) từ client tới máy chủ và ngược lại phản hồi (reponse) từ máy chủ về client đều bắt buộc phải đi qua proxy server. Vì vậy máy chủ hoàn toàn được ẩn danh trước Client. Các client chỉ có thể biết được thông tin của Proxy Server.
Tại sao cần sử dụng Reverse Proxy?
Lợi ích của việc sử dụng là:
- Chạy được nhiều loại ứng dụng một lúc trên Server: Reverse Proxy có thể điều hướng nhiều request tới các ứng dụng riêng lẻ. Bạn có thể chạy ứng dụng A trên cổng 80, ứng dụng B trên cổng 81.
- Cân bằng tải (Load Balancing): Nếu bạn có nhiều máy chủ chạy ứng dụng thì bạn có thể sử dụng, để phân tải bằng việc điều hướng tới tới các server.
- Tăng tốc Web (Web Acceleration): Reserve Proxy còn được sử dụng như mội giải pháp năng cao hiệu suất (performance) cho web site bằng việc nén các dữ liệu vào ra, cache dữ liệu.
- Tường lửa và ẩn danh: Vì là một proxy server ẩn danh nên nó có thể lọc các request, đồng thời che giấu địa chỉ IP của máy chủ.
Cấu hình Reverse Proxy trên Nginx
Để cấu hình chúng ta cần cài đặt Nginx, để cài đặt Nginx vui lòng tham khảo bài viết sau:
Để cấu hình chúng ta chỉnh sửa tập tin mặc định của Nginx tại địa chỉ /etc/nginx/sites-available/default (Tệp cấu hình Virtual Hosts trên Ubuntu)
location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; proxy_pass http://<ip_address>; }
Chúng ta comment lại dòng “try_files $uri $uri/ =404” và thêm tham số “proxy_pass http://<ip_address>;” với <ip_address> là địa chỉ IP của server hoặc hostname mà bạn muốn điều hướng tới.
Sau đó chung là reload hoặc restart lại Nginx để cập nhật file cấu hình
sudo systemctl reload nginx
VD: Một Reverse Proxy được cấu hình như sau
location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $host; proxy_pass https://vinasupport.com; proxy_read_timeout 3600; proxy_connect_timeout 300s; }
Như trên ví dụ trên, nginx sẽ điều hướng traffic về địa chỉ https://vinasupport.com
Giải thích các tham số
- proxy_set_header: Gửi thông tin header từ client cho Server
- proxy_read_timeout: Thời gian timeout chờ đọc thông tin từ server
- proxy_connect_timeout: Thời gian timeout chờ kết nối
Kết luận
Việc sử dụng Reserve Proxy có rất nhiều công dụng, giúp hệ thống website hoạt động mượt mà, bảo mật. Đồng thời nó giúp scale hệ thống web lớn với nhiều traffic. Cám ơn các bạn đã theo dõi bài viết, nếu có bất cứ vấn đề gì vui lòng bình luận bên dưới.
Nguồn: vinasupport.com