Reverse Proxy trên Nginx

Tác giả: 16/03/2023

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

Trả lời