После обновления до Mac OS X Lion (от Snow Leopard) я заметил, что преобразование в виртуальный хост происходит очень медленно (около 3 секунд). Я нашел несколько советов (например, отказ от использования TLD .local), которые могут решить эту проблему, но они не применимы к моей настройке.
Моя установка довольно проста: - Apache 2 (поставляется с Lion) - включен PHP - добавлено несколько виртуальных хостов - установлены пакеты Mail и SMTP Pear
Файл hosts Apache выглядит так:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 tbi.dev
127.0.0.1 www.tbi.dev
127.0.0.1 test1.tbi.dev
127.0.0.1 test2.tbi.dev
127.0.0.1 psa.dev
127.0.0.1 snd.dev
А файл виртуальных хостов Apache выглядит так:
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/tbi"
ServerName tbi.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/tbi"
ServerName tbi.dev
ServerAlias *.tbi.dev www.tbi.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/psa"
ServerName psa.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/sandbox"
ServerName snd.dev
</VirtualHost>
Настройка в основном идентична моей настройке на Snow Leopard, но производительность Apache для разрешения виртуальных хостов значительно отличается. Я запускаю Mac OS X Lion 10.7.2, но проблема уже присутствовала при запуске 10.7.1.
Это может показаться небольшой проблемой, но когда вы обращаетесь к виртуальным хостам несколько сотен раз в день, это, как вы можете себе представить, приводит к значительной трате времени.
Длительные тайм-ауты DNS почти всегда являются признаком проблем с IPv6.
Вам нужно подключение IPv6 к apache?
Если нет, предлагаю изменить
<VirtualHost *:80>
в
<VirtualHost 0.0.0.0:80>
Или вообще отключите соединение IPv6.
Я тоже столкнулся с этим только сейчас.
Это отключит IPv6 в конфигурации сети ...
# list all network interfaces to get their names
networksetup -listallnetworkservices
# disable the one you want, in my case it's WiFi
networksetup -setv6off Wi-Fi
Но ... к сожалению, это не решило для меня проблему разрешения DNS (возможно, после перезапуска системы). Что действительно помогло, так это добавление IP-адресов в стиле ipv6 в / etc / hosts следующим образом:
# my original /etc/hosts ...
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 project.local
# adding this solved resolving:
fe80::1%lo0 project.local
wget http: //project.local теперь отображается мгновенно
Resolving project.local... 127.0.0.1
Connecting to project.local|127.0.0.1|:80... connected.
вместо зависания на 5 секунд при разрешении project.local.
На MacOSX Lion .local
домен был «зарезервирован» для Multicast DNS Resolver (bonjour).
Это означает, что поиск любого домена, заканчивающегося на .local, приведет к поиску mDNS (до 5 секунд). перед / etc / hosts.
Исправления:
.dev
)Посмотри на этот блог чтобы узнать, помогает ли это, особенно выделив проблему №2:
По-видимому, терминал и некоторые инструменты BSD Unix правильно используют /etc/resolv.conf и правильный порядок сначала / etc / hosts, а затем DNS-серверов. Однако все остальное в OS X Lion, включая все ваши приложения, делает это наоборот!
Оно работает.
Я использую это решение
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost6
fe80::1%lo0 localhost
Та же ошибка на Mavericks.
Устранено, когда я помещаю определения моих локальных хостов в начало /etc/hosts
, как это:
127.0.0.1 localhost project1.dev project2.dev
127.0.0.1 project3.dev project4.dev
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
Попробую поменять:
::1 localhost
fe80::1%lo0 localhost
к
::1 localhost6
fe80::1%lo0 localhost6