Лично мне нравится использовать обратный прокси в apache при обслуживании нескольких серверов за одним IP-адресом. Я написал статью об этом несколько лет назад.
Могут быть случаи, когда вам нужно иметь несколько веб-серверов, но вы получили только один публичный IP-адрес. Проблема, с которой вы столкнетесь, заключается в том, что вы хотите, чтобы несколько доменов разрешали один и тот же IP-адрес, но указывали на другой сервер. Это очень выполнимо с Apache. Я настроил сервер шлюза в своем частном облаке с адресом 192.168.1.2. У меня есть несколько веб-серверов с локальными адресами; 192.168.1.10 и 192.168.1.11, например.
На моем сервере шлюза я устанавливаю Apache и файлы mod_proxy. Как только это будет завершено, я смогу настроить виртуальные хосты для переадресации домена.
<VirtualHost *:80>
DocumentRoot /var/www/example.org
ServerName *.example.org
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost on
ProxyPass / http://192.168.1.10/
ProxyPassReverse / http://192.168.1.10
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/example.com
ServerName *.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost on
ProxyPass / http://192.168.1.11/
ProxyPassReverse / http://192.168.1.11/
</VirtualHost>
Перезапустите Apache и настройте маршрутизатор на прием входящих подключений по локальному адресу 192.168.1.2. Хотя я мог бы указать DocumentRoot в том же месте (например, /var /www), но у меня обычно есть файлы .htaccess для каждого сайта, где я могу принудительно использовать SSL (перенаправить 80 на 443 для определенных доменных имен).
Приятной особенностью этого маршрута является то, что вы можете обслуживать несколько серверов HTTPS с одним и тем же IP-адресом. Единственная проблема заключается в том, что Internet Explorer не распознает порт VirtualHost 443 или именованный хост, и вы получите ошибку сертификата. Однако Safari, Firefox и Chrome распознают каждый отдельный сертификат для домена, который проксируется.