.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”标头选择正确的服务器{}块,后连接已建立。换句话说,它实现了基于名称的虚拟主机,而不是基于 IP 的虚拟主机。
如果您希望虚拟主机基于 IP,请更改您的 server{} 块以监听特定的 IP 地址而不是通配符地址:
server {
listen 192.168.68.xxx:80;
}
请记住,如果 Nginx 在将地址分配给接口之前启动,此操作将失败。(可以使用以下方法避免这种情况IP 自由绑定但似乎 Nginx 还不支持这一点。)