Я пытаюсь запустить разные серверы на разных .local
доменах на моем RPi. Это мой nginx default.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name raspberrypi.local;
}
/etc/hosts
файл -
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 raspberrypi
Теперь avahi-publish
я использую псевдоним другого домена
avahi-publish -a -R foo.local 192.168.68.120
Но когда я захожу на этот домен, он также показывает html по умолчанию nginx, который мне не нужен. Я понимаю, что я еще не настроил ни один другой сервер, работающий на этом домене, но я ожидаю, что он выдаст unable to connect или unreachable.
Если это невозможно, есть ли способ иметь несколько .local
доменных имен, которые не являются псевдонимами?
решение1
Но когда я захожу на этот домен, он также показывает html по умолчанию nginx, который мне не нужен. Я понимаю, что я еще не настроил ни один другой сервер, работающий на этом домене, но я ожидаю, что он выдаст unable to connect или unreachable.
Вы не получите сообщение «невозможно подключиться», потому что вы настроили Nginx на прослушиваниевсеадреса для этого сервера – вот что listen *:80
здесь означает; если он прослушивает 0.0.0.0
aka, *
то он будет принимать соединения, выполненные на любой локальный адрес IPv4. (То [::]
же самое происходит и с IPv6.)
( server_name
Опция не влияет на это — все, что она делает, это выбирает правильный блок server{} на основе заголовка HTTP 'Host' в полученном запросе,после(Соединение установлено. Другими словами, он реализует виртуальные хосты на основе имен, а не на основе IP.)
Если вы хотите, чтобы виртуальные хосты работали на основе IP, измените блоки server{} так, чтобы они прослушивали определенные IP-адреса вместо подстановочных адресов:
server {
listen 192.168.68.xxx:80;
}
Имейте в виду, что это не удастся, если Nginx запустится до того, как адрес будет назначен интерфейсу. (Этого можно избежать, используяIP_FREEBIND(Но, похоже, Nginx пока это не поддерживает.)