Apache là một ứng dụng web server có khả năng phục vụ nội dung web động hoặc đóng vai trò như một reverse proxy — chuyển tiếp các yêu cầu từ client đến các ứng dụng chạy phía sau. Bài viết này giải thích cách cấu hình Apache làm reverse proxy với mod_proxy.
Hướng dẫn dưới đây sử dụng ví dụ về việc proxy một ứng dụng ownCloud chạy trên cổng 8080 trong Docker. Tuy nhiên, bạn có thể áp dụng kỹ thuật tương tự cho bất kỳ ứng dụng nào khác chạy trên cổng khác.
Yêu cầu tiên quyết trước khi cài đặt Apache Reverse Proxy
- Triển khai một máy chủ DataOnline Cloud VPS mới.
- Bài viết này sử dụng Ubuntu 20.04, nhưng hướng dẫn cũng áp dụng cho bất kỳ máy chủ Linux nào chạy Apache.
- Thiết lập bản ghi DNS loại “A” trỏ về địa chỉ IP của máy chủ. Bài viết này sử dụng tên miền
app.example.com
. - Kết nối đến máy chủ.
- Đăng nhập bằng tài khoản non-root có quyền
sudo
. - Cập nhật hệ thống.
- Cài đặt Apache.
- Cài đặt Docker.
1. Kích hoạt Apache mod_Proxy
-
Kích hoạt module mod_proxy trên Apache:
-
Kích hoạt các module bổ sung:
Giải thích chức năng từng module:
- mod_proxy: Triển khai tính năng proxy trên máy chủ Apache.
- proxy_http: Xử lý các yêu cầu proxy HTTP và HTTPS.
- proxy_balancer: Kích hoạt tính năng cân bằng tải (load balancing).
- proxy_wstunnel: Tạo đường hầm (tunnel) cho kết nối WebSocket đến máy chủ phía sau.
-
Khởi động lại Apache để áp dụng các module vừa kích hoạt:
2. Thiết lập ứng dụng chạy phía sau (Back-end Application)
Ví dụ này sẽ thiết lập một container ownCloud lắng nghe trên cổng 8080 trong Docker.
-
Tạo container ownCloud:
-
Khởi động ownCloud:
$ docker start owncloud
-
Kiểm tra ownCloud đang chạy:
Output:
3. Cấu hình Apache làm Reverse Proxy
Sao lưu file cấu hình virtual host mặc định của Apache:
Tạo file cấu hình mới:
$ sudo nano /etc/apache2/sites-available/app.example.com.conf
Thêm nội dung sau vào file (thay app.example.com
bằng tên miền của bạn). Nếu bạn đang proxy cho một ứng dụng khác không phải ownCloud, hãy thay 8080
bằng cổng tương ứng của ứng dụng:
Lưu và đóng file.
Giải thích các chỉ thị:
ProxyPreserveHost: Chuyển tiếp header host gốc đến ứng dụng phía sau.
ProxyPass: Chỉ định tất cả yêu cầu “/” được chuyển tiếp đến cổng của ứng dụng phía sau.
ProxyPassReverse: Phản chiếu ProxyPass bằng cách điều chỉnh các header phản hồi từ ứng dụng phía sau.
Kích hoạt file cấu hình vừa tạo:
-
Cấu hình firewall cho phép lưu lượng HTTP trên cổng 80:
-
Cho phép HTTPS trên cổng 443:
-
Khởi động lại firewall:
5. Thiết lập SSL
-
Cài đặt Certbot:
-
Yêu cầu chứng chỉ SSL miễn phí từ Let’s Encrypt:
-
Kiểm tra tính năng tự động gia hạn:
6. Kiểm tra
Mở trình duyệt web và truy cập vào subdomain của bạn:
Trang đăng nhập ownCloud sẽ hiển thị. Đăng nhập bằng tài khoản admin
và mật khẩu admin
để bắt đầu sử dụng ứng dụng.
Thông tin thêm
Bạn đã cấu hình Apache làm reverse proxy và thiết lập ownCloud làm ứng dụng phía sau. Để tìm hiểu thêm, hãy tham khảo các tài nguyên dưới đây:
- Tài liệu Apache mod_proxy
- Sử dụng Apachetop để giám sát lưu lượng Web Server theo thời gian thực
- Bảo mật Apache với chứng chỉ TLS/SSL tự ký trên Ubuntu 20.04