Я использую запутанную и плохо документированную часть программного обеспечения (sfDomainRoutePlugin), чтобы обеспечить субдомен для моего веб-сайта. Я использую Apache в качестве веб-сервера и использую на сервере безголовую Ubuntu 10.0.4 LTS.

После долгих проб и ошибок я обнаружил, что единственный способ заставить сгенерированные ссылки на субдомены работать (без получения ошибки «Сервер не найден»)- это жестко закодировать имена субдоменов в мой файл /etc /hosts.

Это прекрасно работает, когда я тестирую на localhost - однако я хочу развернуть решение на удаленном сервере, на котором запущено несколько виртуальных серверов (разных веб-сайтов). Удаленный сервер вообще не использует файл /etc /hosts, поскольку каждый веб-сайт имеет уникальное имя.

У меня такой вопрос: могу ли я просто ввести жестко закодированные записи домена (вместе со статическим IP-адресом) в файл etc/hosts? или есть другой способ сделать это?

Мой предложенный подход заключается в изменении файла /etc /hosts на удаленном сервере следующим образом:

123.456.789.123    foo.example.com
123.456.789.123    foo1.example.com
123.456.789.123    foo2-bar.example.com

Где 123.456.789.123 - статический IP-адрес удаленного сервера.

Это способ сделать это?

Я был бы особенно рад услышать от любого тона, которому удалось использовать sfDomainRoutePlugin для аналогичной цели в производственной среде.

2 ответа2

2

Если весь поддомен должен обслуживаться одним физическим сайтом, у вас есть:

  • напиши в DNS-зоне что-то вроде

    www В ip-адресе

    somename IN A другой ip-адрес / если нужно /

    • В CNAME www

последние записи выдают за все и любые неопределенные в именах зоны IP www в качестве ответа

  • В панели управления хостингом определите * .domainname как псевдоним для сайта www.

можно просто ввести жестко запрограммированные записи домена (вместе со статическим IP-адресом) в файл etc/hosts?

Нет. С помощью хостов вы сможете направлять запросы на правильный сервер, но он не сможет обрабатывать запросы, не зная о сопоставлении поддоменов (эти сайты не существуют для сервера).

1

Поскольку все ваши домены / субдомены используют один и тот же IP-адрес, нам не нужно беспокоиться о каких-либо обратных прокси. см. ниже несколько примеров. Они предназначены для разных доменов, но работают так же хорошо для поддоменов. Вам не нужно редактировать файл hosts.

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example1.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example2.org

# Other directives here

</VirtualHost> 

Кроме того, пинг каждого из ваших поддоменов. Если они не возвращают ваш статический IP-адрес, то вы знаете, что это проблема DNS/ записи. Возможно, вам придется еще раз взглянуть на настройку регистрации вашего домена или подождать, пока DNS (обычно от 15 минут до часа) вступит в силу.

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