Я настроил переадресацию портов так, чтобы они указывали на мой рабочий веб-сервер, чтобы выбранные пользователи могли получать доступ к сайту через наш внешний 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>

Могу ли я изменить настройки так, чтобы при этом показывался правильный веб-сайт? Благодарю.

1 ответ1

2

Если у вас есть несколько доменных имен, размещенных на одном и том же IP-адресе, веб-сервер использует домен, присутствующий в заголовках запросов, чтобы выяснить, какой контент следует обслуживать. Большинство установок apache по умолчанию поставляется с конфигурацией "VirtuaHost", даже если она обслуживает только один сайт.

Вы можете сделать один сайт сайтом по умолчанию, когда в запросе недостаточно информации для выбора нужного VirtualHost, обратитесь к документации Apache о конфигурации виртуального хоста по умолчанию .

Другой способ - указать какое-либо доменное имя для внешнего IP-адреса и включить это доменное имя в конфигурацию VirtualHost с помощью директивы ServerAlias.

[Обновить]

Вы не можете обслуживать более одного веб-сайта на одном и том же ip/ порту с использованием имен, основанных на имени, но вы можете обслуживать их через альтернативные порты TCP (или IP-адреса, если у вас есть более одного доступного).

Если вы не можете настроить внешний DNS, для использования vhosts на основе имен вы можете прибегнуть к этому трюку: отредактируйте файл клиентского компьютера /etc /hosts (или %WINDIR%\system32\drivers\etc\host) в укажите то же внутреннее имя DNS на ваш внешний IP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .