Hướng dẫn cấu hình Reverse Proxy với NGINX mới nhất
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 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 :
```
yum repolist
```
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 :
```
http://testing.com
```
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