Tìm hiểu cách thiết lập Apache HTTP Server làm Reverse Proxy bằng mod_proxy để điều hướng, cân bằng tải và bảo mật lưu lượng truy cập.
Giới thiệu về Apache Reverse Proxy và mod_proxy
Apache HTTP Server không chỉ là một web server mạnh mẽ mà còn có khả năng đóng vai trò làm máy chủ proxy ngược (Reverse Proxy). Nhờ tiện ích mở rộng mod_proxy cùng các module liên quan, Apache có thể tiếp nhận các yêu cầu truy cập từ client, chuyển tiếp chúng đến các máy chủ ứng dụng phía sau (backend servers) và trả kết quả về cho người dùng. Mô hình này giúp tăng cường tính bảo mật, tối ưu hóa hiệu năng và đơn giản hóa việc quản lý lưu lượng.
Bước 1: Kích hoạt các Module Apache cần thiết
Để sử dụng tính năng Reverse Proxy, bạn cần kích hoạt module mod_proxy cùng các module giao thức tương ứng (ví dụ: HTTP).
Trên các hệ điều hành dựa trên Debian/Ubuntu, bạn chạy các lệnh sau:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
Sau khi bật các module, khởi động lại dịch vụ Apache để áp dụng thay đổi:
sudo systemctl restart apache2
Bước 2: Cấu hình Virtual Host làm Reverse Proxy
Tiếp theo, tạo hoặc chỉnh sửa tệp cấu hình Virtual Host của Apache (ví dụ: /etc/apache2/sites-available/reverse-proxy.conf).
Thêm đoạn cấu hình cơ bản sau:
<VirtualHost *:80>
ServerName yourdomain.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>
Giải thích các directive quan trọng:
ProxyRequests Off: Vô hiệu hóa Forward Proxy để đảm bảo an toàn cho máy chủ, tránh bị lợi dụng làm Open Proxy.ProxyPreserveHost On: Chuyển tiếp HTTP headerHostgốc từ client đến máy chủ backend.ProxyPass / http://127.0.0.1:8080/: Chuyển tiếp toàn bộ yêu cầu từ đường dẫn gốc (/) đến ứng dụng đang chạy ở cổng8080.ProxyPassReverse: Điều chỉnh các header HTTP do máy chủ backend trả về để đảm bảo trình duyệt người dùng không bị chuyển hướng sai tên miền.
Bước 3: Cấu hình Cân bằng tải (Load Balancing) - Tùy chọn
Nếu hệ thống của bạn có nhiều máy chủ backend, bạn có thể thiết lập cân bằng tải với mod_proxy_balancer:
<VirtualHost *:80>
ServerName yourdomain.com
<Proxy balancer://mycluster>
BalancerMember http://10.0.0.1:8080
BalancerMember http://10.0.0.2:8080
</Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>
Bước 4: Kiểm tra và hoàn tất cấu hình
Sau khi chỉnh sửa xong tệp cấu hình, thực hiện các bước sau:
- Kích hoạt Virtual Host mới:
sudo a2ensite reverse-proxy.conf - Kiểm tra cú pháp cấu hình Apache để đảm bảo không có lỗi:
sudo apachectl configtest - Nếu màn hình hiển thị
Syntax OK, tải lại Apache để hoàn tất:sudo systemctl reload apache2
Bằng cách triển khai Apache làm Reverse Proxy với mod_proxy, bạn đã xây dựng thành công một lớp đệm bảo vệ cho các ứng dụng backend, đồng thời dễ dàng mở rộng hạ tầng mạng khi cần thiết.
Ngày phát hành: 20/05/2026
Nguồn: www.digitalocean.com