Tại sao dung reverse proxy

Khác với Apache, Nginx là máy chủ web phổ biến nhất hiện có. Ngoài việc là một máy chủ web, nó cũng có thể được sử dụng như một trình cân bằng tải hoặc reverse proxy. Trong hướng dẫn này, Quantrimang.com sẽ chỉ cho bạn cách có thể sử dụng Nginx làm reverse proxy.

Reverse proxy là gì?

Một proxy server hoạt động với vai trò trung gian giữa máy khách và máy chủ khác. Proxy server lấy tài nguyên từ máy chủ mà bạn muốn kết nối và gửi nó cho bạn để xem. Một reverse proxy hoạt động theo cùng một cách, ngoại trừ vai trò bị đảo ngược. Khi bạn yêu cầu thông tin từ máy chủ, reverse proxy sẽ giữ yêu cầu và gửi nó đến máy chủ backend thích hợp. Điều này cho phép quản trị viên hệ thống sử dụng máy chủ cho nhiều ứng dụng, cũng như đảm bảo luồng lưu lượng truy cập mượt mà hơn giữa máy khách và máy chủ.

Tại sao dung reverse proxy

Lợi ích của reverse proxy

Tùy thuộc vào ứng dụng của bạn, bạn có thể có các trường hợp sử dụng reverse proxy khác nhau.

  • Một reverse proxy cho phép bạn chạy nhiều ứng dụng trên cùng một máy chủ - Nếu bạn có nhiều ứng dụng chạy trên cùng một máy chủ, tất cả chúng không thể “lắng nghe” cùng lúc trên cổng 80 hoặc 433. Với reverse proxy, bạn có thể cấu hình nó để chuyển hướng lưu lượng truy cập đến các ứng dụng riêng lẻ nếu cần.
  • Cân bằng tải - Nếu có nhiều máy chủ chạy cùng một ứng dụng, bạn có thể sử dụng reverse proxy để phân phối lưu lượng đều cho từng máy chủ.
  • Tường lửa ứng dụng web - Bạn có thể sử dụng reverse proxy để ẩn ứng dụng của mình và cũng để lọc IP spam hoặc bảo vệ khỏi cuộc tấn công DDOS.
  • Ghi nhật ký và kiểm tra dễ dàng - Vì tất cả lưu lượng truy cập đến được quản lý bởi reverse proxy, nên việc ghi nhật ký và giám sát luồng lưu lượng sẽ dễ dàng hơn.

Cấu hình Nginx làm reverse proxy

Để thiết lập Nginx làm reverse proxy, bài viết sẽ sử dụng tham số proxy_pass trong file cấu hình Nginx.

Lưu ý: Hướng dẫn này giả định rằng bạn có một số kiến ​​thức về Nginx và đã cài đặt, cũng như thiết lập Nginx trong máy chủ của bạn.

Trong hầu hết các trường hợp sử dụng, Nginx sẽ là máy chủ front-end, “lắng nghe” cổng 80 (HTTP) hoặc 443 (HTTPS) cho các yêu cầu đến. Vì chỉ có thể có một dịch vụ “nghe” trên cổng 80 hoặc 443, ứng dụng của bạn sẽ phải “nghe” trên một cổng khác, chẳng hạn như cổng 8081. Cấu hình đơn giản nhất sẽ giống như thế này:

server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}

Điều này có nghĩa là tất cả các yêu cầu đến myapp.com tại cổng 80 sẽ được chuyển hướng đến cổng 8081.

Thiết lập nâng cao

Ngoài directive proxy_pass, có một số directive khác mà bạn có thể sử dụng để thiết lập nâng cao hơn.

  • proxy_set_header - Điều này cho phép bạn đặt tiêu đề để gửi đến ứng dụng nền. Ví dụ, xem cấu hình sau:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Bạn có thể đặt tiêu đề proxy cần thiết để chuyển đến ứng dụng, cho nó biết IP yêu cầu và địa chỉ từ xa, sau đó xuất nội dung chính xác cho trang web yêu cầu.

  • proxy timeout - Điều này cho phép bạn đặt giá trị timeout (thời gian chờ) để gửi và nhận yêu cầu proxy. Ví dụ:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
  • proxy_buffers - Điều này cho phép Nginx tạm thời giữ phản hồi của proxy server và chỉ gửi đến máy chủ yêu cầu sau khi proxy server kết thúc phản hồi. Ví dụ:
proxy_buffers 32 4k;

Nếu ứng dụng của bạn gửi một số lượng lớn file, thì bạn có thể muốn vô hiệu hóa proxy_buffers:

proxy_buffering off;

Như bạn có thể thấy, Nginx là một máy chủ reverse proxy có rất nhiều công dụng. Điểm cộng lớn nhất về nó là cấu hình đơn giản, dễ sử dụng và vẫn cho phép bạn mở rộng quy mô trong các tình huống phức tạp hơn. Để biết thêm chi tiết, bạn có thể xem tài liệu mô-đun proxy Nginx (tại https://nginx.org/en/docs/http/ngx_http_proxy_module.html) hoặc các ví dụ cấu hình (tại https://www.nginx.com/resources/wiki/start/topics/examples/full/).

Chúc bạn thực hiện thành công!

  • Techblog
  • Thủ thuật

Tại sao dung reverse proxy

Trong bài ngày hôm nay, BizFly Cloud sẽ cùng các bạn tìm hiểu và thực hiện cấu hình Reverse Proxy với NGINX đầy đủ và chi tiết.

Trong khi hầu hết các ứng dụng phổ biến đều có thể tự chạy dưới dạng web server, Nginx web server lại cung cấp một số tính năng nâng cao như: cân bằng tải/Load Balancer, TLS/SSL và khả năng tăng tốc mà hầu hết các ứng dụng chuyên biệt không có. Sử dụng Nginx reverse proxy sẽ giúp tận dụng được tất cả những lợi ích này.

Lợi ích của việc sử dụng Nginx Reverse Proxy trên một instance 

Một số lợi ích đáng chú ý khi thiết lập Nginx reverse proxy HTTPS:

Cân bằng tải/Load Balancer: Một Nginx reverse proxy có thể thực hiện cân bằng tải giúp phân phối đồng đều các yêu cầu của máy khách/client trên các backend servers. Ngoài ra còn cải thiện khả năng dự phòng trong trường hợp một máy chủ gặp sự cố, reverse proxy sẽ chỉ cần định tuyến lại các yêu cầu đến một máy chủ khác theo policy đã có.

Tăng cường bảo mật: Một Nginx reverse proxy cũng có khả năng như một phòng tuyến bảo vệ cho các backend servers. Việc cấu hình reverse proxy sẽ đảm bảo danh tính của các backend servers sẽ không được tìm ra.

Nâng cao hiệu suất: Nginx được đánh giá khá cao về khả năng truyền tải, phân phối tệp nội dung tĩnh và phân tích URL.

Dễ dàng ghi nhật ký và kiểm tra: Vì chỉ có một điểm truy cập duy nhất khi triển khai Nginx reverse proxy nên việc ghi nhật ký và kiểm tra trở nên đơn giản hơn nhiều.

Mã hóa kết nối giữa máy khách và Nginx reverse proxy bằng TLS, kết nối HTTPS được mã hóa và bảo mật giúp người dùng bảo vệ dữ liệu của mình.

Sau đây chúng ta sẽ đi vào phần chính của bài viết:

Mô hình:

Tại sao dung reverse proxy

Cấu hình NGINX Reverse Proxy

Khởi tạo repo NGINX :

'''

vi /etc/yum.repos.d/nginx.repo

```

Thêm vào nội dung sau :

```

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=1

```

Import chữ ký xác thực :

```

wget --no-check-certificate -O nginx_signing.key https://nginx.org/keys/nginx_signing.key

rpm --import nginx_signing.key

```

Cập nhật thông tin repo :

Cài đặt NGINX thông qua repo trước đó:

```

yum --disablerepo=* --enablerepo=nginx install nginx -y

```

Cấu hình firewalld cho phép port 80 :

```

firewall-cmd --zone=public --permanent --add-port=80/tcp

firewall-cmd --zone=public --permanent --add-port=443/tcp

firewall-cmd --reload

```

Khởi động và cấu hình startup cho dịch vụ :

```

systemctl start nginx.service

systemctl enable nginx.service

```

Sửa file cấu hình /etc/nginx/nginx.conf

```

vi /etc/nginx/nginx.conf

```

Thêm vào đoạn sau :

```

http {

...

server {

server_name www.testing.com testing.com;

listen 80 default_server;

listen [::]:80 default_server;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

location / {

proxy_pass http://192.168.5.20/;

}

}

...

}

# trong đó 192.168.5.20 là địa chỉ của Web Server Backend

Khởi động lại dịch vụ NGINX :

```

systemctl restart nginx

```

Cấu hình Web Server Apache (Backend)

Cài đặt httpd :

```

yum -y install httpd

```

Cấu hình firewalld cho phép port 80 và 443 :

```

firewall-cmd --zone=public --permanent --add-port=80/tcp

firewall-cmd --zone=public --permanent --add-port=443/tcp

firewall-cmd --reload

```

Khởi động và cấu hình startup cho dịch vụ httpd :

```

systemctl start httpd

systemctl enable httpd

```

Chỉnh sửa lại format ghi log trong file cấu hình /etc/httpd/conf/httpd.conf

```

vi /etc/httpd/conf/httpd.conf

```

Sửa lại tại dòng 196 :

```

LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

```

Khởi động lại dịch vụ httpd :

```

systemctl restart httpd

```

Kiểm tra kết quả

Truy cập vào địa chỉ của NGINX Reverse Proxy trên trình duyệt của client và bạn sẽ được điều hướng đến Web Server Apache :

Tại sao dung reverse proxy

Theo Bizfly Cloud chia sẻ

>> Có thể bạn quan tâm: Hướng dẫn sử dụng nginx làm HTTP load balancer 

BizFly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp nhất, được vận hành bởi VCCorp.

BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cậptại đây.