Những gì bạn đã hỏi là một tình huống rất phổ biến trong đó trong các ứng dụng có thể không chạy trên Gateway và chúng có thể đang chạy trên một số máy chủ trong mạng LAN nhưng với thế giới thì có vẻ như nó đến từ Request_url.com
Tôi điều hành 4 trang web với proxy mod Apaches và ít nhất 15 dịch vụ khác nhau trên 4 trang web khác nhau này phụ thuộc vào chúng. Tôi không có kinh nghiệm về Amazon EC2 nhưng Amazon EC2 sử dụng Xen làm phụ trợ. Hãy để chúng tôi nói rằng máy chính phải đối mặt với internet và có IP công cộng được gọi là dom0 bây giờ được đọc theo thuật ngữ sau đây
Dom0 with IP 192.168.0.100 (This will be our Server facing internet)
DomU1 with IP 192.168.0.11
DomU2 with IP 192.168.0.12
DomU3 with IP 192.168.0.13
DomU4 with IP 192.168.0.14
Tôi giả sử bạn có một dns cục bộ trên Dom0 (hoặc một số nơi trong mạng của bạn) biết IP của DomU có tên. (Nếu không cuộc sống sẽ khó khăn) thì trong apache2.conf (httpd.conf trên các hệ thống loại Fedora)
NameVirtualHost *
<VirtualHost *>
ServerName mainserver
DocumentRoot /var/www
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /domu1 http://192.168.0.11/
ProxyPass /domu2 http://192.168.0.12/
ProxyPass /domu3 http://192.168.0.13/
ProxyPass /domu4 http://192.168.0.14/
ProxyPassReverse /domu1 http://192.168.0.11/
ProxyPassReverse /domu2 http://192.168.0.12/
ProxyPassReverse /domu3 http://192.168.0.13/
ProxyPassReverse /domu4 http://192.168.0.14/
</VirtualHost>
Cách này là một cách để đạt được những điều bạn đã hỏi (bao giờ không được khuyến nghị) nếu bạn nâng cấp máy chủ (ví dụ: Dom0), bản cập nhật có thể ghi đè lên apache2.conf hoặc httpd.conf. Vì vậy, một khi bạn hiểu ý nghĩa của các mục trên (Kiểm tra nó cho các yêu cầu của bạn, tôi đã vật lộn một thời gian dài với một số thứ tương tự bạn muốn do đó tôi đã đưa ra một giải pháp dễ dàng nhưng không được đề xuất). Khi bạn hiểu ProxyPass ở trên, sau đó tạo các cấu hình Máy chủ ảo khác nhau trong thư mục có sẵn của trang nếu đó là hệ thống Ubuntu / Debian hoặc trong Red Hat, nó vẫn có thể (bạn sẽ phải tìm kiếm) Tôi sẽ chỉ cho bạn một cái để nó giúp bạn bạn nghỉ 4-5 bạn có thể tự mình thực hiện cuộc
gọi này /etc/apache2/sites-enables/myi INTERNa1.conf nó trông như sau
<VirtualHost *:80 >
ServerName myserver1.com
ServerAdmin webmaster@localhost
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://192.168.1.3/
ProxyPassReverse / http://192.168.1.3/
ErrorLog /var/log/apache2/server1/server1_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/server1/server1_access.log combined
CustomLog /var/log/apache2/server1/server1-resp_log resp
LogFormat "%a %{X-Forwarded-For}i %h %D %t %f %p %>s %U %v" resp
</VirtualHost>
Virtualhost ở trên sẽ được xác định trên Dom0 để tất cả các yêu cầu được phục vụ từ máy chủ nội bộ server1.com. Cách thức hoạt động là một số người trên internet sẽ nhập vào trình duyệt của họ
http://requested_url.com/domu1
Bây giờ yêu cầu này đến được Dom0 và Máy chủ ảo Apache trên Dom0 kiểm tra Cấu hình proxy và thấy rằng / domu1 được ánh xạ tới một máy chủ nội bộ để nó chuyển tiếp đến máy thực sự phải phục vụ. Để người dùng trên internet tất cả điều này bị ẩn.
Bao giờ một từ thận trọng trong khi làm như vậy, hệ thống Apache trên Ubuntu phục vụ các máy chủ ảo theo tên theo thứ tự chữ cái của tệp vhost (không phải tên máy chủ mà tôi đang đề cập đến tên của tệp như sorting.c tệp máy chủ ảo Apache) (đó là lý do tại sao có là một tệp mặc định 000) trên các hệ thống Ubuntu, vì vậy hãy đảm bảo rằng bạn có một máy chủ nhiều hơn số lượng trang web bạn sẽ phục vụ (sẽ phục vụ như trang lỗi). Đây là một thông lệ tiêu chuẩn.