vGo.codes

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:

TypeNameValue
A@IP máy chủ
AwwwIP 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ụcGiá trị
Domain namedomaincuaban.com
Target typeURL address
Targethttp://127.0.0.1:3000
Send Host$http_host
URL RewriteĐể trống nếu không cần
Remarkdomaincuaban.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.