我正在嘗試在.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.0
aka,*
那麼它將接受與任何本機 IPv4 位址建立的連線。 ([::]
對於 IPv6 的作用相同。)
(該server_name
選項不會影響這一點 - 它所做的只是根據收到的請求中的 HTTP“Host”標頭選擇正確的 server{} 區塊,後連線已建立。換句話說,它實作了基於名稱的虛擬主機,而不是基於 IP。
如果您希望虛擬主機基於 IP,請變更您的伺服器區塊以偵聽特定 IP 位址而不是通配符位址:
server {
listen 192.168.68.xxx:80;
}
請記住,如果 Nginx 在位址分配給介面之前啟動,這將會失敗。 (這可以避免使用IP_自由綁定但 Nginx 似乎還不支援。