Reverse Proxy trên Nginx
Hôm nay Nhân Hòa sẽ hướng dẫn các bạn cấu hình Nginx làm proxy server.
Mục đích sử dụng
Đối lập với forward proxy, đây là một loại proxy phía server. Server đóng vai trò làm reverse proxy sẽ chắn trước các request từ client đẩy đến và che dấu toàn bộ backend server đằng sau.
- Tránh việc khai thác lỗ hổng trực tiếp trên webserver
- Cân bằng tải (1 reverse có thể forward cho nhiều server)
- Lọc và kiểm soát các yêu cầu client gửi tới, tránh mã độc mà client mang theo
- Quản lý tập chung
Kịch bản LAB
- Nginx đứng trước (front end server)listen các request 80 443 forwarding đến Apache(back end server)
- Nginx có IP public là 103.28.36.64,trỏ domain tudv.xyz về 103.28.36.64, cấu hình https cho tudv.xyz, IP private là 10.10.10.6 ,
- Apache có IP private 10.10.10.3 thông với 10.10.10.6 , chạy website tudv.xyz , listen port 9999 ( mình để Apache chạy port này vì trong bài Lab có thêm phần cài ssl cho website http://tudv.xyz:9999)
- Mô hình ngắn gọn hơn là chạy cả Nginx và Apache trên cùng 1 server. Nginx listen 80 443, Apache listen 9999.
Tạo bản ghi
Các bạn đăng nhập vào quản trị DNS của tên miền và tạo 2 bản ghi @ và www trỏ về 103.28.36.64, ở đây mình trỏ tudv.xyz
Config Apache
1. Update OS và cài httpd
yum update -y yum install httpd -y
2.Sửa file conf của httpd
vi /etc/httpd/conf/httpd.conf
42 Listen 9999
95 ServerName www.tudv.xyz:9999 151 All
196 LogFormat "\"%{X-Forwarded-For}i\" %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Xóa các conf mặc định và tạo đơn giản 1 index.html
rm -rf /etc/httpd/conf.d/welcome.conf
rm -rf /var/www/html/*
vi /var/www/html/index.html
Open port 9999 hoặc stop firewall
systemctl stop firewalld
Khởi động lại apache
systemctl start httpd
systemctl enable httpd
Config Nginx
1. Cài đặt nginx
yum install update -y yum install epel-release -y yum install nginx -y
Khởi động dịch vụ
systemctl start nginx systemctl enable nginx
Kiểm tra nginx
netstat -pnltu | grep nginx
2. Tải chứng chỉ Ssl của tudv.xyz lên server, ở đây mình tải lên tại /ssl/domains/tudv.xyz
3. Cấu hình /etc/nginx/nginx.conf
Phần cấu hình thay đổi là phần mình khoanh đỏ
server { listen 80 default_server; listen [::]:80 default_server; server_name www.tudv.xyz; rewrite ^ https://$http_host$request_uri? permanent; } server { listen 443 ssl http2 default_server; ssl_certificate /ssl/domains/tudv.xyz/certificate.crt; ssl_certificate_key /ssl/domains/tudv.xyz/private.key; server_name www.tudv.xyz; 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://10.10.10.3:9999; } }
Lưu lại và khởi động nginx
nginx -t service nginx restart
Kiểm tra truy vấn
Lời Kết
Như vậy Nhân Hòa đã hướng dẫn các bạn cấu hình Reverse Proxy trên Nginx.
Chúc các bạn thực hiện thành công và hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com