Я настроил переадресацию портов так, чтобы они указывали на мой рабочий веб-сервер, чтобы выбранные пользователи могли получать доступ к сайту через наш внешний IP-адрес, когда он не в сети. Переадресация на сервер работает, но на этом сервере есть несколько конфигураций, и в данный момент он останавливается на первом, поэтому отображается неправильный веб-сайт.
Например, возьмем эти две конфигурации, и наш внешний IP-адрес 11.22.33.44
- то, что я хотел бы сделать, это перейти http://11.22.33.44:789
(произвольный порт, может быть любым) и показать веб-сайт в конфигурации 1. Тем не менее, веб-сайт в Config 2 показывает, потому что он идет в алфавитном порядке в списке конфигов. Есть ли способ (аналогичный ServerAlias), чтобы я мог проверить, к какому порту был получен доступ, и использовать соответствующий конфиг?
Конфиг 1
Listen *:789
NameVirtualHost *:80
NameVirtualHost *:789
<VirtualHost *:80 *.789>
ServerName test.dynedrewett.com
DocumentRoot /var/www/html/website/test
ErrorLog /var/log/httpd/test.dynedrewett.com-error
CustomLog /var/log/httpd/test.dynedrewett.com-access combined
ErrorDocument 401 /wp-content/themes/dyne_drewett/401.php
</VirtualHost>
Конфиг 2
<VirtualHost *:80>
ServerName dummy.dynedrewett.com
ServerAlias dummy
DocumentRoot /var/www/html/intranet/intranet_test
ErrorLog /var/log/httpd/dummy.dynedrewett.com-error
CustomLog /var/log/httpd/dummy.dynedrewett.com-access combined
ErrorDocument 403 /wp-content/themes/dyne_drewnett/403.php
</VirtualHost>
Могу ли я изменить настройки так, чтобы при этом показывался правильный веб-сайт? Благодарю.
источник
Ответы:
Если у вас есть несколько доменных имен, размещенных на одном и том же IP-адресе, веб-сервер использует домен, присутствующий в заголовках запросов, чтобы выяснить, какой контент следует обслуживать. Большинство установок apache по умолчанию поставляется с конфигурацией «VirtuaHost», даже если она обслуживает только один сайт.
Вы можете сделать один сайт сайтом по умолчанию, когда в запросе недостаточно информации для выбора нужного VirtualHost, обратитесь к документации Apache о конфигурации виртуального хоста по умолчанию .
Другой способ - указать какое-либо доменное имя для внешнего IP-адреса и включить это доменное имя в конфигурацию VirtualHost с помощью директивы ServerAlias.
[Обновить]
Вы не можете обслуживать более одного веб-сайта на одном и том же ip / порту с использованием имен, основанных на имени, но вы можете обслуживать их через альтернативные порты TCP (или IP-адреса, если у вас есть более одного доступного).
Если вы не можете настроить внешний DNS, чтобы использовать vhosts, основанные на именах, вы можете прибегнуть к этому трюку: отредактируйте
%WINDIR%\system32\drivers\etc\host
файл клиентского компьютера / etc / hosts (или ), чтобы он указывал то же внутреннее имя DNS на ваш внешний IP.источник
_default_
vhost или сделать желаемый vhost по умолчанию, переместив его в первую конфигурацию vhost, перейдите по ссылке в ответе.