[Note] Trỏ domain về lớp mạng sau NAT (multi VPS, multi local IP)

[Trỏ Domain]
Tình hình là mình có 2 cái VPS được cài trên cùng một Server vật lý. 2 VPS này được cài 2 webserver khác nhau. (gọi tắt 2 VPS là là VPS A và VPS B)

VPS A có địa chỉ local là a.a.a.a
VPS B có địa chỉ local là b.b.b.b

Mở port 80 ra ngoài internet.
NAT là NAT theo IP local của a.a.a.a

Trên VPS B mình cũng đã tạo vhost riêng cho bbb.xyz nằm ngoài thư mục web mặc định.

Giờ mình muốn trỏ domain bbb.xyz về port 80 của VPS B thì phải làm thế nào?

Mình đã thử:
Config vhost bình thường trên VPS A thì thư mục web của bbb.xyz phải nằm trên VPS A vì ngoài Internet đi vào qua NAT sẽ vào máy A.
Config vhost ProxyPass về IP VPS B thì khi kiểm tra biến $_SERVER[‘HTTP_HOST’] nó sẽ trả về IP b.b.b.b chứ không phải domain bbb.xyz
—-
Update: Trong khi ngồi cố gắng giải thích câu hỏi cho rõ ràng nhất thì mình đã tìm ra giải pháp :v
Giải pháp vẫn là dùng ProxyPass vì chỉ có ProxyPass mới hướng luồng truy cập từ VPS A sang VPS B được, và khi sang VPS B thì nó sẽ theo vhost của WebServer B mà vô thư mục bbb.xyz.
Vấn đề là khi mình cấu hình ProxyPass trong vhost của WebServer A thì khai báo IP của VPS B là b.b.b.b, do vậy khi người ngoài mạng truy cập bbb.xyz và gọi HTTP_HOST thì nó sẽ cho ra địa chỉ b.b.b.b. Việc này khiến việc cài đặt một số ứng dụng Web như WordPress, GeoServer,.. sẽ bị lỗi link vì các link nó sẽ đi theo HTTP_HOST hết (tức là thay vì khai báo các resources của ứng dụng theo địa chỉ bbb.xyz thì nó ghi b.b.b.b/jsdj/dsfjh/…)
Để ý cái này nên mình nghĩ là mình sẽ thay vì thay báo b.b.b.b cho ProxyPass thì mình sẽ khai báo luôn tên domain bbb.xyz. Rồi trong file host của VPS A mình sẽ đều hướng nó về local IP b.b.b.b của VPS B.
(Tức là ở máy A, khi nhập địa chỉ bbb.xyz nó sẽ đi vào địa chỉ b.b.b.b của máy B)
Vô máy B thì nó theo cấu hình vhost ở đó mà về thư mục bbb.xyz mình đã chỉ định.

VPS A

file vhost

<VirtualHost *:80>
ServerName bbb.xyz
SetEnv NS_ENV variable_value
ProxyPass / http://bbb.xyz/
ProxyPassReverse / http://bbb.xyz/
</VirtualHost>

file host

b.b.b.b bbb.xyz

VPS B

file vhost

NameVirtualHost *:80

<Directory “D:/WebData/”>
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>

<VirtualHost *:80>
DocumentRoot “D:/bbb.xyz/”
ServerName bbb.xyz
ErrorLog “logs/bbb.xyz-error.log”
CustomLog “logs/bbb.xyz-access.log” combined
<Directory “D:/bbb.xyz/”>
# AllowOverride All # Deprecated
# Order Allow,Deny # Deprecated
Allow from all # Deprecated

# –New way of doing it
Require all granted
</Directory>
</VirtualHost>

Vậy là OK^^

-soiqualang_chentreu-