Используйте разные серверы nginx для разных доменов .local

Используйте разные серверы nginx для разных доменов .local

Я пытаюсь запустить разные серверы на разных .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.0aka, *то он будет принимать соединения, выполненные на любой локальный адрес IPv4. (То [::]же самое происходит и с IPv6.)

( server_nameОпция не влияет на это — все, что она делает, это выбирает правильный блок server{} на основе заголовка HTTP 'Host' в полученном запросе,после(Соединение установлено. Другими словами, он реализует виртуальные хосты на основе имен, а не на основе IP.)

Если вы хотите, чтобы виртуальные хосты работали на основе IP, измените блоки server{} так, чтобы они прослушивали определенные IP-адреса вместо подстановочных адресов:

server {
    listen 192.168.68.xxx:80;
}

Имейте в виду, что это не удастся, если Nginx запустится до того, как адрес будет назначен интерфейсу. (Этого можно избежать, используяIP_FREEBIND(Но, похоже, Nginx пока это не поддерживает.)

Связанный контент