![ubuntu 18.04 中正确的 /etc/hosts 配置](https://linux22.com/image/163976/ubuntu%2018.04%20%E4%B8%AD%E6%AD%A3%E7%A1%AE%E7%9A%84%20%2Fetc%2Fhosts%20%E9%85%8D%E7%BD%AE.png)
您好,我想在我的本地主机虚拟机 Ubbuntu 18.04 中拥有三个虚拟服务器。
我想要一个 localhost -> /var/www/html 一个 onlyoffice.eduardo.com -> /var/www/onlyoffice (文档服务器)另一个到 nextcloud.eduardo.com -> /usr/share/nginx/nextcloud16
1 - 哪个 etc/hosts 会更好:
127.0.0.1 localhost
127.0.0.1 onlyoffice.eduardo.com
127.0.0.1 nextcloud.eduardo.com
或全部在同一行
127.0.0.1 localhost onlyoffice.eduardo.com nextcloud.eduardo.com
我想当我输入时它会按顺序查找名称http://onlyoffice.eduardo.com例如....
2 - 最好有不同的ip:
127.0.0.1 localhost
127.0.0.2 onlyoffice.eduardo.com
127.0.0.3 nextcloud.eduardo.com
我还应该触摸其他文件吗?
总体思路是在同一个地方放置 nextcloud、文档服务器(onlyoffice)。我还想将 nextcloud onlyoffice 应用程序连接到http://onlyoffice.eduardo.com
所以我必须以某种方式在可用站点和已启用站点中进行配置。我更喜欢使用 nginx 而不是 apache。
谢谢
到目前为止我的工作:https://drive.google.com/open?id=1I2ZiRUKqmm8u5U5TsqyoOKUvfTwY-SPA 提前致谢
答案1
配置各种主机名的原因/etc/hosts
是为了让本地 Web 浏览器(客户端)知道要连接哪个 IP 地址才能到达相应的主机名,仅此而已。
如果您将 Web 服务器配置为将每个虚拟主机绑定到不同的 127.0.0.* IP 地址,则还必须使用将主机名与相应的 IP 地址关联。否则客户端将无法连接到正确的虚拟主机。这将是基于IP的虚拟主机。
但网络服务器根本不需要/etc/hosts
,因为它将能够查看 HTTP 请求的标头并查看请求中实际使用的主机名。即使仅使用一个端口和一个 IP 地址,如果配置为这样做,它也能够根据请求中使用的主机名呈现不同的内容。这被称为基于名称的虚拟主机。
Apache 和 nginx 都能够处理任一方法;这只是决定使用哪一个的问题。基于名称的方法需要较少的 IP 地址,这使其成为公共网络服务器中使用最广泛的方法,因为静态 IP 地址是有限的资源。
在 中/etc/hosts
,“同一行中的所有名称”明确表明第一个列出的名称是主要名称,其余名称是别名 - 有点类似于在 DNS 中使用 CNAME 记录。如果客户端同时执行正向和反向查找(例如出于 HTTPS 证书验证目的),则此格式最有可能通过反向查找检查而不会引起安全警告。
如果在 中使用“多行具有相同的IP地址” /etc/hosts
,并执行反向查找,仅返回匹配 IP 的第一行。
在 Linux 中,该nslookup
命令通常仅显式查询 DNS。要像应用程序一样测试完整的主机名解析过程,您应该使用getent hosts <hostname-or-IP-address>
.通过该命令,您可以/etc/hosts
亲自验证不同配置的效果。
在 StackExchange 中,标准流程是每个问题帖子一个问题。根据您帖子的标题和大部分内容,这个问题是关于/etc/hosts
.如果您需要有关配置网络服务器的帮助,您应该为此发布另一个问题,而不是尝试将这个问题延伸到扩展讨论中。