nginx virtualhosts 如何知道域?

How does nginx virtualhosts know the domain?

Whosebug 社区您好!

nginx 如何知道 url 来自哪个域以便提供正确的页面?我尝试将域和完整的 url 添加到 Referer header,但这没有用。有什么方法可以访问服务器的 ip 并通过正确的请求获得网站吗?

Nginx 通过查看请求中的 Host HTTP header 知道要服务哪个域。例如,如果您的服务器有多个虚拟主机(假设 domain1.comdomain2.com),您可以使用以下 curl 命令从您的虚拟主机获取根 HTML 页面:

curl -H 'Host: domain1.com' <server_ip>

curl -H 'Host: domain2.com' <server_ip>

此外,对于 nginx 侦听的每个 IP 和端口组合,其中一个 vhost 将作为 default 之一。有关如何选择默认虚拟主机的更多详细信息,请参阅 How nginx processes a request official documentation page (or this 答案。