我的域名“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>
对 ICMP 数据包和 Web 访问的 Ping 应答用于侦听 TCP/80 和/或 TCP/443。
如果您可以 ping 您的主机,则意味着您的防火墙可能允许 ICMP 数据包。
如果您无法从浏览器访问您的网站或 API,这可能是由不同的原因造成的:
您也可以从命令行尝试:
如果是这样,可能是因为您的应用程序没有正确响应,这意味着您必须在应用程序层对其进行调试
如果不是,则可能是您的防火墙阻止了 HTTP/HTTPS 数据包,或者您的网络服务器未启动。所以,尝试启动它
编辑 要让您的 apache 服务器回答特定域,您需要添加一个 VirtualHost 配置。去做这个:
使用以下内容创建文件 /etc/apache2/sites-available/yourdomain.conf:
根据您的站点调整其配置(域和目录),并添加一个符号链接到启用 sites0:
重启apache2。
我还建议您阅读此操作指南: 如何在 Ubuntu 18.04 上设置 Apache 虚拟主机
您的网站在使用其 IP 地址调用时可以正确应答,但在使用其名称调用时则不能正确应答。
这意味着您的 Web 服务器配置不正确:Web 服务器根据(除其他外)HTTP 请求中使用的主机名来选择要服务的内容;这就是您可以在同一系统中托管不同网站的方式:相同的 IP 地址,不同的名称。
如果 Web 服务器回复未命名的请求(那些使用其 IP 地址而没有任何特定主机名的请求)而不是命名的请求,则应检查其配置并确保它确实知道它应该响应该名称。
由于您实际上可以通过指向其 IP 地址来查看您的网站,这排除了防火墙或网络问题;这似乎是一个专门的网络服务器问题。
因为 PING 不同于网站。您基本上会问“在我的车里,为什么我的空调在工作,而我的收音机却不行”。你的车,不同的设备。如果您只按照您所说的去做 - 为什么您会期望 firefox 做其他事情?除非它有一个可以回答的 WWW 服务器(你什么都没说)——普通的最终用户路由器甚至不会回答。
SuddenLink和许多其他 ISP(互联网服务提供商)已经封锁了 80 和 443 端口。这意味着,尽管对这个问题做出了广泛而详细的回答,但唯一真正的解决方案是在这些端口没有被封锁的地方托管,或者使用不那么贪婪的ISP。