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. Show 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ủ. Lợi ích của reverse proxyTù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.
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:
Đ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 caoNgoà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.
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.
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:
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!
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: Cấu hình NGINX Reverse ProxyKhở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 : 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. |