Назад | Перейти на главную страницу

Проблемы с обслуживанием vhosts при попытке настроить поддомены с подстановочными знаками с помощью dnsmasq в локальной среде разработки

Я пытаюсь включить DNS с подстановочными знаками на своем ноутбуке с помощью dnsmasq. Я понимаю, что это было спросил и ответил больше одного раза на этом форуме, но я не могу заставить решение работать для меня.

Предпринятые шаги:

Примечание: example.dev не установлен в / etc / hosts

Мой vhost например dev

<VirtualHost *:80>
        ServerName example.dev
        DocumentRoot /home/jkendall/public_html/example/public
        ServerAlias *.example.dev

        # This should be omitted in the production environment
        SetEnv APPLICATION_ENV development

        <Directory /home/jkendall/public_html/example/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Приведенная выше настройка будет без проблем выполнять локальный сервер example.dev. Он также будет обслуживать test.example.dev, но test.example.dev возвращает apache по умолчанию "Он работает!" index.html из / var / www, а не из моего index.php в / home / jkendall / public_html / example / public.

Решение в этом Поток сбоя сервера предполагает, что

address=/.example.dev/127.0.0.1

решит мою проблему, но когда я пытаюсь использовать это решение, перезапуск dnsmasq приводит к сбою с сообщением об ошибке

dnsmasq: error at line 62 of /etc/dnsmasq.conf

Для усмешки я переместил свой проект в / var / www / example и соответствующим образом изменил vhost. Получил такой же результат, как описано выше.

На данный момент я не уверен, какие еще шаги я могу предпринять для решения проблемы. Мысли?

У меня точно такая же настройка, как вы описали в своем вопросе, с одним дополнением: в моем Apache vhost Listen 80 и NameVirtualHost *:80 установлен. Это должно подключить apache к порту 80 - там, где ваш браузер слушает, и это может быть та часть, которую ваша первоначальная настройка отсутствует.

Если вы можете восстановить свою первоначальную настройку (да, я знаю, это было 1/2 года назад), вам также необходимо проверить, правильно ли работает dnsmasq, позвонив dig example.dev | grep SERVER (который должен вернуться ;; SERVER: 127.0.0.1#53(127.0.0.1).

Кажется, я работал с фундаментальным непониманием dnsmasq, vhosts и dns. dnsmasq делал именно то, что должен был, перенаправляя запросы, например, dev на 127.0.0.1. Хотя у меня были настроены и правильно настроены vhosts, не было локального DNS-сервера, который мог бы отвечать и направлять эти запросы в нужное место.

В конечном итоге моя проблема была решена установкой bind9, создав зону, например.dev, а затем добавив запись A для поддомена с подстановочными знаками.

Вот подробности:

  • Установлен bind9 через Synaptic Package Manager
  • Добавлена ​​зона в named.conf.local
  • Скопировано /etc/bind/db.local к /etc/bind/example.dev
  • Отредактировал новый файл зоны в соответствии со своими потребностями.
  • Проверено
  • Танцевали танец победы

Вот мой named.conf.local

zone "example.dev" {
    type master;
    file "/etc/bind/example.dev";
};

Вот мой db.example.dev

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                       201005173       ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
example.dev     IN      A       127.0.0.1
*       IN      A       127.0.0.1
@       IN      AAAA    ::1

Я не буду приводить пример танца победы.