我有一个带有 2 个站点的 nginx 负载均衡器设置。负载均衡器的 IP 地址是 192.168.123.10 我想本地访问这两个站点以检查一切是否正常。但我对主机名和域名有点困惑。我为第一个站点指定了主机名:“test”和域名“mytest.local”。我在手册中看到,如果我想访问该站点,我应该转到 test.mytest.local 并使该地址的 DNS 指向负载均衡器的 IP。
但是我不明白我的电脑如何知道我想要哪个站点,因为如果我进行负载平衡的另一个站点是 anothertest.mytest.local 并且它解析为相同的 IP,这有什么不同?
我没有设置任何 DNS,我只是想检查 nginx 是否正常工作,所以我仍然可以本地访问网站 test.mytest.local 吗?(无需设置 DNS)?
答案1
是的,你可以,/etc/hosts
像这样编辑:
192.168.0.10 example.com.local
当您尝试解析任何主机名时,它会首先检查该文件,然后继续使用 DNS 服务器。我这样说是为了让你知道,例如,如果你添加1.2.3.4 google.com
到/etc/hosts
,你将无法获得真正的google.com
答案2
“NGINX 服务器块”似乎就是您正在寻找的。
Web 客户端(即 Firefox 或 Chrome)将所需的 URL 发送到 Web 服务器,因此 Web 服务器可以根据 Web 浏览器用于访问的“名称”在同一 IP 上提供不同的站点。
看一下这个示例配置此 NGINX 页面,这是不言自明的:
http {
index index.html;
server {
server_name www.domain1.com;
access_log logs/domain1.access.log main;
root /var/www/domain1.com/htdocs;
}
server {
server_name www.domain2.com;
access_log logs/domain2.access.log main;
root /var/www/domain2.com/htdocs;
}
}
答案3
通过这种方式,您可以访问www.domain1.com通过同一台机器。但就我而言,我想访问www.domain1.com通过不同的机器,在同一网络中本地连接。
通过访问www.domain1.com通过不同的机器,它尝试从不同设备的“/etc/hosts”文件解析主机。