Cấu hình Reverse Proxy (proxy_pass) trên Nginx


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à:

  1. 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.
  2. 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.
  3. 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.
  4. 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

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web