Hướng dẫn trỏ tên miền với Proxy Project trên aaPanel
Proxy Project trong aaPanel dùng để tạo reverse proxy cho một tên miền. Cách này thường dùng khi website/app của bạn đang chạy ở một cổng nội bộ, ví dụ:
http://127.0.0.1:3000
http://127.0.0.1:4099
http://localhost:8000
Sau khi cấu hình Proxy Project, người dùng chỉ cần truy cập tên miền như:
https://domaincuaban.com
aaPanel/Nginx sẽ tự động chuyển tiếp request về ứng dụng đang chạy phía sau.
1. Chuẩn bị trước khi cấu hình
Trước khi tạo Proxy Project, bạn cần chuẩn bị:
Tên miền
Ví dụ:
domaincuaban.com
www.domaincuaban.com
Tên miền này cần được trỏ DNS về IP máy chủ đang cài aaPanel.
Ví dụ bản ghi DNS:
| Type | Name | Value |
|---|---|---|
| A | @ | IP máy chủ |
| A | www | IP máy chủ |
Nếu dùng Cloudflare, có thể bật hoặc tắt proxy đám mây màu cam tùy nhu cầu. Khi mới cấu hình SSL, nếu gặp lỗi xác thực, nên tạm thời để DNS Only trước.
Ứng dụng backend đang chạy
Ví dụ app Node.js/Next.js đang chạy tại:
http://127.0.0.1:3000
Bạn nên kiểm tra trước bằng lệnh:
curl http://127.0.0.1:3000
Nếu trả về HTML hoặc nội dung website nghĩa là app đang chạy ổn.
2. Tạo Proxy Project trong aaPanel
Trong aaPanel, vào mục quản lý website hoặc reverse proxy, chọn:
Add proxy
Sau đó điền các thông tin như sau.
3. Cấu hình Domain Name
Ở ô Domain name, nhập tên miền muốn chạy proxy.
Ví dụ:
domaincuaban.com
Nếu muốn dùng thêm www, có thể thêm cả:
domaincuaban.com
www.domaincuaban.com
Mỗi tên miền có thể nhập trên một dòng.
4. Cấu hình Target
Ở phần Target, chọn loại:
URL address
Sau đó nhập địa chỉ ứng dụng backend.
Ví dụ:
http://127.0.0.1:3000
Ý nghĩa:
domaincuaban.com → aaPanel/Nginx → http://127.0.0.1:3000
Khi người dùng truy cập tên miền, aaPanel sẽ chuyển tiếp request vào app đang chạy ở port 3000.
Một số ví dụ Target thường gặp:
http://127.0.0.1:3000
http://127.0.0.1:4099
http://localhost:8000
http://192.168.1.10:8080
5. Cấu hình Send Host
Ở mục Send Host, nên giữ mặc định:
$http_host
Giá trị này giúp aaPanel gửi đúng host/domain gốc về backend.
Ví dụ người dùng truy cập:
https://domaincuaban.com
Backend sẽ nhận được host là:
domaincuaban.com
Điều này rất quan trọng với các app như Next.js, Laravel, WordPress, API Gateway hoặc các hệ thống cần nhận diện domain.
Chỉ nên đổi Send Host khi bạn hiểu rõ backend cần nhận host cụ thể nào.
6. Cấu hình URL Rewrite
Phần URL Rewrite dùng để rewrite đường dẫn trước khi proxy về backend.
Ví dụ:
/aaa → /bbb
Nếu không có nhu cầu rewrite URL, có thể để trống.
Thông thường với website/app chạy nguyên domain, bạn không cần cấu hình phần này.
7. Cấu hình Remark
Ở ô Remark, có thể nhập ghi chú để dễ quản lý.
Ví dụ:
domaincuaban.com
Next.js app port 3000
Proxy frontend website
Sau đó bấm:
Confirm
để tạo Proxy Project.
8. Kiểm tra website sau khi tạo Proxy
Sau khi tạo xong, truy cập thử:
http://domaincuaban.com
Nếu cấu hình đúng, website sẽ hiển thị nội dung từ app đang chạy ở:
http://127.0.0.1:3000
Nếu chưa hoạt động, cần kiểm tra:
curl http://127.0.0.1:3000
Kiểm tra app có đang chạy không:
pm2 list
hoặc:
netstat -tulpn | grep 3000
9. Bật SSL cho tên miền

Sau khi Proxy Project hoạt động bằng HTTP, tiếp theo cần bật SSL để website chạy HTTPS.
Trong aaPanel, vào phần quản lý site/proxy project, chọn tab:
SSL
Sau đó chọn:
Let's Encrypt
hoặc nếu đã có chứng chỉ thì dùng:
Other certificate
10. Cấp chứng chỉ Let's Encrypt
Ở tab SSL, aaPanel sẽ hiển thị các thông tin như:
Certificate brand: R13
Certificate domain(s): domaincuaban.com, www.domaincuaban.com
Expired: yyyy-mm-dd
Nếu chưa có SSL, bấm:
Apply SSL
hoặc:
Renew SSL
nếu muốn gia hạn lại chứng chỉ.
Sau khi cấp thành công, trạng thái sẽ hiển thị:
Deployed
Lúc này website có thể truy cập bằng:
https://domaincuaban.com
11. Lưu ý khi cấp SSL
Để Let's Encrypt cấp SSL thành công, cần đảm bảo:
Tên miền đã trỏ đúng về IP server.
Port 80 và 443 đã mở.
Website/proxy project đang tồn tại trong aaPanel.
Nếu dùng Cloudflare, SSL/TLS nên để:
Full
hoặc:
Full (strict)
Sau khi SSL trên server đã hoạt động ổn định.
Nếu đang bật Cloudflare proxy màu cam và cấp SSL lỗi, hãy thử chuyển DNS sang:
DNS Only
rồi cấp lại SSL.
12. Ví dụ cấu hình hoàn chỉnh

Giả sử bạn có app Next.js đang chạy tại:
http://127.0.0.1:3000
Bạn muốn truy cập bằng domain:
domaincuaban.com
Cấu hình Proxy Project như sau:
| Mục | Giá trị |
|---|---|
| Domain name | domaincuaban.com |
| Target type | URL address |
| Target | http://127.0.0.1:3000 |
| Send Host | $http_host |
| URL Rewrite | Để trống nếu không cần |
| Remark | domaincuaban.com |
Sau đó bật SSL tại tab SSL và cấp chứng chỉ Let's Encrypt.
Kết quả:
https://domaincuaban.com
sẽ proxy về:
http://127.0.0.1:3000
13. Một số lỗi thường gặp
Lỗi 502 Bad Gateway
Nguyên nhân thường gặp:
Backend chưa chạy.
Sai port.
App chỉ listen localhost nhưng cấu hình không đúng.
Firewall chặn port nội bộ.
Kiểm tra bằng:
curl http://127.0.0.1:3000
Nếu lệnh này lỗi, cần khởi động lại app trước.
Lỗi SSL không cấp được
Nguyên nhân thường gặp:
Tên miền chưa trỏ đúng IP.
Port 80 bị chặn.
Cloudflare proxy gây lỗi xác thực.
Site/proxy project chưa được tạo đúng.
Có thể kiểm tra DNS bằng:
ping domaincuaban.com
hoặc:
nslookup domaincuaban.com
Website bị redirect sai domain
Nguyên nhân có thể do cấu hình Send Host không đúng.
Nên giữ:
$http_host
để backend nhận đúng domain người dùng đang truy cập.
Website load được nhưng mất CSS/JS
Nguyên nhân thường do app build sai base path, asset path hoặc cấu hình rewrite không đúng.
Nếu chạy proxy nguyên domain, phần URL Rewrite nên để trống.
14. Kết luận
Proxy Project trên aaPanel là cách đơn giản để đưa một ứng dụng nội bộ như Node.js, Next.js, React, Laravel, API service hoặc CMS ra ngoài bằng tên miền thật.
Quy trình cơ bản gồm:
Trỏ DNS về server
→ Tạo Proxy Project
→ Nhập Domain name
→ Nhập Target backend
→ Giữ Send Host là $http_host
→ Bật SSL Let's Encrypt
→ Truy cập website bằng HTTPS
Với cấu hình đúng, bạn có thể chạy nhiều website/app khác nhau trên cùng một server, mỗi app dùng một domain riêng và proxy về một port nội bộ khác nhau.