![为什么我 ping 域名时可以工作,但在浏览器中却不行?](https://linux22.com/image/761386/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%20ping%20%E5%9F%9F%E5%90%8D%E6%97%B6%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BD%86%E5%9C%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E5%8D%B4%E4%B8%8D%E8%A1%8C%EF%BC%9F.png)
我的域名“codeplane.dev”(其 IP 地址使用 Google 的 dydns API 定期更新)可以 ping 通并在 ping 通后显示正确的 IP 地址,但每当我尝试在 Firefox 中访问该域名时,请求都会超时。只有当我使用域名时才会发生这种情况,每当我将 ping 命令显示的 IP 地址输入 Firefox 时,网站都会正常显示。我应该怎么做才能确保每当我在浏览器中输入我的域名时,我的网页都会显示出来?
这是我的 apache 网站配置:codeplane.dev.conf
<VirtualHost *:80>
ServerName codeplane.dev
ServerAlias www.codeplane.dev
DocumentRoot /var/www/codeplane.dev/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName codeplane.dev
ServerAlias www.codeplane.dev
DocumentRoot /var/www/codeplane.dev/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
答案1
Ping 回答 ICMP 数据包和 Web 访问用于监听 TCP/80 和/或 TCP/443。
如果您可以 ping 您的主机,则意味着您的防火墙可能允许 ICMP 数据包。
如果您无法从浏览器访问您的网站或 API,则可能由不同原因造成:
- 首先,仔细检查防火墙规则,确认允许使用 TCP 80 和/或 443 端口
您也可以从命令行尝试此操作:
curl http://yoursite.example
curl -I http://yoursite.example
- 查看服务器的日志并检查是否可以看到您的请求到达服务器。
如果是这样,可能是因为你的应用程序没有正确响应,这意味着你必须在应用程序层进行调试
如果没有,可能是因为您的防火墙阻止了 HTTP/HTTPS 数据包,或者您的网络服务器没有启动。因此,请尝试启动它
编辑 要让您的 Apache 服务器响应特定域,您需要添加 VirtualHost 配置。具体操作如下:
创建一个文件 /etc/apache2/sites-available/yourdomain.conf,内容如下:
<VirtualHost *:80>
ServerName yourdomain.example
ServerAlias www.yourdomain.example
DocumentRoot /var/www/yourdomain/public/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
根据您的网站调整其配置(域和目录)并添加指向 sites0-enabled 的符号链接:
ln -s /etc/apache2/sites-available/yourdomain.conf /etc/apache2/sites-enabled/yourdomain.conf
重新启动 apache2。
我还建议您阅读以下指南: 如何在 Ubuntu 18.04 上设置 Apache 虚拟主机
答案2
您有一个网站,当使用其 IP 地址调用时可以正确响应,但使用其名称调用时则不能。
这意味着您的 Web 服务器配置不正确:Web 服务器根据 HTTP 请求中使用的主机名(以及其他因素)选择要提供的内容;这就是您可以在同一系统上托管不同网站的方式:相同的 IP 地址,不同的名称。
如果 Web 服务器回复未命名的请求(使用其 IP 地址执行的请求,没有任何特定主机名),但不回复命名的请求,则您应该检查其配置,并确保它确实知道它应该与这个名字相符。
因为你可以看通过指向其 IP 地址来检查您的网站,这排除了防火墙或网络问题;这似乎是一个具体的 Web 服务器问题。
答案3
因为 PING 不同于网站。您基本上会问“为什么在我的车里,空调可以工作,但收音机却不工作”。您的车,不同的设备。如果您只做了您说的 - 为什么您还指望 Firefox 做其他事情?除非它有一个可以回答的 WWW 服务器(您对此只字未提) - 普通的最终用户路由器甚至不会回答。
答案4
突如其来的链接和许多其他 ISP(互联网服务提供商)都封锁了端口 80 和 443。这意味着,尽管对这个问题的回答广泛而详细,但唯一真正的解决方案是将这些端口托管在没有被封锁的地方,或者使用不那么贪婪的 ISP。