Подстановочные знаки *.local хосты для Apache на OS X
Я хотел бы направить все мои домены *.local или *.dev на определенный IP-адрес, либо IP-адрес моей виртуальной машины Ubuntu, либо localhost. Это возможно? Могу ли я использовать файл /etc/hosts?
Я использую Mac OS X Snow Leopard с Ubuntu Hardy Heron LTS - JeOS на VMware Fusion 3.
Прямо сейчас я просто продолжаю делать записи /etc/hosts для каждой из них, и я бы предпочел, чтобы это было похоже на подстановочный DNS, и пусть Apache обрабатывает домены, а затем вручную вводит их каждый раз. Мне нравится гибкость, чтобы обновлять это, когда я делаю что-то странное или кто-то дает мне странный запрос, но я думаю, что 90% из них будут лучше автоматизированы.
4 ответа
К сожалению, вы не можете добавлять подстановочные знаки в файл /etc/hosts. Тем не менее, эта статья демонстрирует метод, который работает с тигром. Хотя я думаю, что launchctl устарела как леопард, но он все еще может работать.
Настройка подстановочного ответа в конфигах apache проста, но apache не имеет ничего общего с вашим локальным разрешением имен - он принимает только те соединения, которые были ему переданы, так что от сетевого стека зависит правильное соединение направление первое.
Насколько я знаю, это означает, что вам нужно либо запустить локальный DNS-сервер в вашей сети / машине, либо добавить записи в /etc/hosts для каждого домена dev.
Запустите что-то вроде dnsmasq, что позволит вам добавить несколько пользовательских записей DNS, но перенаправить все остальное на ваш обычный DNS-сервер.
Мы настраиваем DNS-сервер BIND на машине с Linux, чтобы указать домен верхнего уровня *.dev на машину Apache. Мы объявляем этот DNS-сервер всем клиентам локальной сети через DHCP, поэтому все запросы проходят через этот сервер и могут разрешать.dev.
В конфигурации Apache мы используем так называемый массовый виртуальный хостинг, чтобы избежать необходимости редактировать конфигурацию для каждого нового сайта. Таким образом, мы можем просто создать новый каталог с правильным соглашением об именах, и он будет найден.