我已将这些行添加到 hosts 文件中:
127.0.0.1 localhost adobe.com
127.0.0.1 adobe.com
它在 Windows 上运行良好。但在 Ubuntu 11.10 中,当我尝试使用 Firefox 访问它时,网站会打开。
Google Chrome 虽然支持 /etc/hosts 配置。Google Chrome 显示:
“成功了!这是该服务器的默认网页。Web 服务器软件正在运行,但尚未添加任何内容。”
答案1
我可以确认您的问题,即在 Chrome 和 Firefox 之间,似乎只有 Firefox 受到影响。这是针对受相同问题影响的用户以及受两种/所有浏览器影响的用户的答案。请按照以下步骤操作以使其正常工作。假设您已经编辑了/etc/hosts
文件,我建议使用以下两种方法来编辑文件:
- Gedit —
gksudo gedit /etc/hosts
(您现在有一种 GUI 友好的方式来编辑文件。提供 gksudo 的 gksu 在官方 18.04 及更高版本的存储库中已停用。) - nano —
sudo nano /etc/hosts
(您现在可以通过终端友好的方式来编辑文件。)
例如:
127.0.0.1 localhost adobe.com
或者
127.0.0.1 localhost
127.0.0.1 adobe.com
(两者是同一件事。)
首先从终端测试一下它是否正常工作。输入ping adobe.com
,它应该会根据分配给它的 IP 做出响应。在本例中,它应该会响应 127.0.0.1。这意味着它没问题。
然后我们继续进行浏览器测试。您测试了 Chrome,它成功了。您更改了/etc/hosts
adobe.com 条目,每次更改时它都成功了。但是,您使用了 Firefox,它可能第一次成功了,但在来回更改hosts
文件后,它不知何故停止了工作。这意味着存在缓存问题或解析正确名称的问题。
对于 Firefox 并解析名称,Firefox 会添加前缀万维网到 Adobe 网站,因此它看起来像“www.adobe.com”,但在 Chrome 上它看起来像“adobe.com”。它们都指向同一个地方,www 前缀只是为了告诉您,您正在访问的地方是一个 Web 服务。但是对于您的问题,您需要将其添加到文件中,hosts
这样当 Firefox 添加前缀 www 时它就可以正常工作。所以它看起来像这样:
127.0.0.1 localhost
127.0.0.1 adobe.com www.adobe.com
或者同样
127.0.0.1 localhost adobe.com www.adobe.com
注意:请记住,您必须按下F5刷新网站/Firefox 选项卡或关闭选项卡并再次打开以进行测试。疯狂按下按钮Enter是行不通的。
这应该可以解决一些用户的问题,但假设到现在为止您仍然没有解决问题,我们可以测试一下可能是什么问题。
我们现在要检查几级缓存。首先是程序缓存(在本例中是 Firefox),然后是系统缓存(在本例中是 Ubuntu),最后是硬件缓存(在本例中是路由器)。
据我所知,Ubuntu 桌面版默认没有安装 DNS 缓存服务。最常见的是神经胶质细胞如果你已经安装了这个,那么一个简单的/etc/init.d/nscd restart
就可以了。但是大多数人都不会安装这个,所以我们可以推翻 Ubuntu 系统的错误。
剩下的就是路由器和 Web 浏览器。对于路由器,您必须将其配置为停止 DNS 缓存或重新配置它以解决此问题。这完全取决于路由器型号、制造商等。并非所有路由器都支持 DNS 缓存,但有些路由器支持,您需要在其配置中查看它是否有此选项以及是否启用了此选项。但让我们假设您没有启用 DNS 缓存的路由器。
这样就剩下浏览器了。
要了解 Firefox 的 DNS 缓存是否不好,您可以安装一个插件来检查 Firefox 中的 DNS 缓存。我推荐的是DNS 缓存。
重新启动 Firefox 后,您应该会在底部看到一个齿轮(类似于右上角的 Ubuntu 齿轮)。您可以左键单击或右键单击该齿轮,然后应该会看到诸如启用/禁用 DNS 和刷新 DNS 之类的选项。如果问题出在 Firefox DNS 缓存上,这将有所帮助。试试看。
我想我已经知道了所有可以解决这个问题的方法。如果我漏掉了什么,请告诉我。
答案2
我知道这个帖子已经有一年了,但我在寻找相同问题的答案时偶然发现了它。我终于找到了解决方案!原来该/etc/hosts
文件被 DNS 完全绕过了。要更改此设置,您必须编辑下的/etc/nsswitch.conf
和 include 。示例如下:files
hosts
passwd: compat
group: compat
shadow: compat
hosts: dns files myhostname <-- this line here.
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
这将确保/etc/hosts
文件包含在名称解析检查中。它将首先检查 DNS,然后检查文件hosts
。我确信 OP 不再需要此信息,但对于任何寻求此问题答案的人来说,这仍然很有用。
您还必须重新启动才能使此设置生效
答案3
我相信etc/hosts
它在网络软件堆栈中的使用比浏览器本身更广泛。也就是说,该文件中的更改应该会影响任何浏览器。
您看到的内容可能是 Firefox 缓存 DNS 条目的结果 - 即您在 Firefox 中打开网站,Firefox 记住了与 adobe.com 域对应的 IP 地址,您修改/etc/hosts
并重新加载了页面 - Firefox 不会发出新的 DNS 查询,而是使用缓存的数据。然后您打开 Chrome,它会发出新的 DNS 查询,并使用您输入的内容/etc/hosts
作为 adobe.com 的 IP 地址
重新启动 Firefox 应该可以解决该问题。
答案4
你可以尝试:
- 编辑 /etc/hosts 文件。
添加下一行
# /etc/hosts 127.0.0.1 localhost 127.0.1.1 myhost01 127.0.1.2 myhost02