В настоящее время я настраиваю веб-сервер в своей локальной сети, чтобы удовлетворить некоторые потребности, например использование Phabricator или других служб интрасети. Для этого я установил apache2, php5, mysql и DNSMASQ, которые позволяют мне управлять DHCP- и DNS-серверами. Но теперь я застрял с виртуальными хостами, которые отлично работают на локальном компьютере, но не могут быть доступны с другого компьютера в локальной сети, я получаю «ERR_CONNECTION_REFUSED».
Чтобы проверить свои настройки, я объявил виртуальный хост следующим образом:
Создание корневой папки нашего сайта
$ sudo mkdir -p /var/www/test.devbox/public_html
$ chown -R $USER:$USER /var/www/test.devbox/public_html
Размещение индексного файла и добавление случайного текста
$ nano /var/www/test.devbox/public_html/index.html
Теперь мы создаем наш файл виртуального хоста
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.devbox.conf
$ sudo nano /etc/apache2/sites-available/test.devbox.conf
Файл конфигурации виртуального хоста
<VirtualHost *:80>
ServerAdmin admin@test.devbox
ServerName test.devbox
ServerAlias www.test.devbox
DocumentRoot /var/www/test.devbox/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Затем мы включаем его, используя
$ sudo a2ensite test.devbox
Затем я отредактировал свой файл hosts, чтобы он соответствовал директиве имени сервера в моем файле test.devbox.config (на стороне сервера)
$ sudo nano /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.1.254 bbox
127.0.1.1 MyPie
127.0.0.1 MyPie
127.0.0.1 devbox
127.0.0.1 opcv.devbox www.opcv.devbox
127.0.0.1 test.devbox www.test.devbox
Вот и мой файл dnsmasq.conf
$ sudo nano /etc/dnsmasq.conf
domain-needed
expand-hosts
bogus-priv
no-resolv
no-poll
localise-queries
no-negcache
# DNS
#interface=eth0
local=/devbox/
domain=devbox
cache-size=10000
server=8.8.4.4
server=8.8.8.8
#server=194.158.122.10
#server=194.158.122.15
# DHCP
dhcp-authoritative
dhcp-range=192.168.1.100,192.168.1.200,10h
dhcp-option=3,192.168.1.254
Затем я перезапустил все
$ sudo reboot
or
$ sudo /etc/init.d/dnsmasq restart
$ sudo service apache2 reload/restart
И на данный момент я не знаю, где мне искать, поскольку виртуальный хост работает локально, но не может быть доступен с другого компьютера в той же сети.
Используя NSLOOKUP с другой машины, я получаю
c:\WINDOWS\system32>nslookup test.devbox
Server: UnKnown
Address: 192.168.1.10 (which is the server)
Nom : test.devbox
Address: 127.0.0.1
И когда я пытаюсь получить доступ http: //test.devbox, Я получаю ERR_CONNECTION_REFUSED. Я больше не знаю, где искать.
Вот ответ команды apache2ctl
$ sudo apache2ctl -S
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:5
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 is a NameVirtualHost
default server 127.0.0.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost 127.0.0.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost example.devbox (/etc/apache2/sites-enabled/example.devbox.conf:1)
alias www.example.devbox
port 80 namevhost opcv.devbox (/etc/apache2/sites-enabled/opcv.devbox.conf:1)
port 80 namevhost phabricator.devbox (/etc/apache2/sites-enabled/phabricator.devbox.conf:1)
port 80 namevhost test.devbox (/etc/apache2/sites-enabled/test.devbox.conf:1)
alias www.test.devbox
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
Спасибо и надеюсь, что вместе мы сможем решить эту проблему.
Я разобрался в своей проблеме, было две проблемы.
1: Мой dhcp-сервер все еще был включен на моем маршрутизаторе ... (хотя я уже отключил его, когда настраивал свой dhcp и dns-сервер ...
2: Действительно, мой DNSMASQ был настроен неправильно. Теперь он настроен для перенаправления трафика со специфического домена (здесь devbox) на сервер apache. Я новичок, я понимаю, что сделал, но не смог бы это объяснить. (Не носитель языка)
#domain-needed not needed
no-hosts
#expand-hosts not needed
bogus-priv
no-resolv
no-poll
localise-queries
no-negcache
# DNS
#interface=eth0
#local=/lan/
#domain=lan
address=/devbox/192.168.1.10 -> This is the line redirecting traffic.
cache-size=10000
server=8.8.4.4
server=8.8.8.8
#server=194.158.122.10
#server=194.158.122.15
# DHCP
dhcp-authoritative
dhcp-range=192.168.1.100,192.168.1.200,10h
dhcp-option=3,192.168.1.254
Как видно из вывода nslookup, вы неправильно настроили запись DNS, она указывает test.devbox на 127.0.0.1. Вместо этого он должен указывать на IP-адрес 192.168.x.x сервера.
После исправления этого (в соответствии с вашими комментариями), чтобы сделать то, что вы хотите, сначала вы должны убедиться, что каждый клиентский компьютер, на котором вы хотите перемещаться по своим сайтам, использует ваш сервер для разрешения DNS.
Что происходит, на клиентской машине A вы открываете браузер и вводите:
http://test.devbox/
В адресной строке.
Браузер на клиентском компьютере A запрашивает у DNS-сервера IP-адрес test.devbox и в результате получает 192.168.1.10.
Браузер открывает TCP-соединение с 192.168.1.80 порт 80 (HTTP) и отправляет этот запрос (здесь я опускаю неинтересные заголовки):
GET / HTP/1.1
Host: test.devbox
[...]
HTTP-сервер по этому адресу отвечает так, как вы его настроили.
Короче говоря, если вы используете отдельные серверные и клиентские машины и хотите использовать полное доменное имя вместо IP-адреса для навигации по вашему сайту, вы либо добавляете соответствующие записи в / etc / hosts машин (или аналогичные под Windows), либо вы гарантируете, что обе машины используют DNS-сервер под вашим контролем. И нет, к 127.0.0.1 нельзя получить доступ за пределами локальной машины :-)