對不同的 .local 網域使用不同的 nginx 伺服器

對不同的 .local 網域使用不同的 nginx 伺服器

我正在嘗試在.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

但是當我訪問這個網域時,它還顯示了 nginx 預設的 html,這是我不想要的。據我所知,我尚未配置在該網域上運行的任何其他伺服器,但我希望它會出現無法連接或無法存取的情況。

如果這是不可能的,是否有辦法擁有多個.local不是別名的網域?

答案1

但是當我訪問這個網域時,它還顯示了 nginx 預設的 html,這是我不想要的。據我所知,我尚未配置在該網域上運行的任何其他伺服器,但我希望它會出現無法連接或無法存取的情況。

你不會得到“無法連接”,因為你配置了 Nginx 來監聽全部該伺服器的位址 – 這就是listen *:80這裡的意思;如果它正在偵聽0.0.0.0aka,*那麼它將接受與任何本機 IPv4 位址建立的連線。 ([::]對於 IPv6 的作用相同。)

(該server_name選項不會影響這一點 - 它所做的只是根據收到的請求中的 HTTP“Host”標頭選擇正確的 server{} 區塊,連線已建立。換句話說,它實作了基於名稱的虛擬主機,而不是基於 IP。

如果您希望虛擬主機基於 IP,請變更您的伺服器區塊以偵聽特定 IP 位址而不是通配符位址:

server {
    listen 192.168.68.xxx:80;
}

請記住,如果 Nginx 在位址分配給介面之前啟動,這將會失敗。 (這可以避免使用IP_自由綁定但 Nginx 似乎還不支援。

相關內容