我想介绍一些内容来为您提供全面的了解,也许如果您更好地了解流程的每个部分,那么您可以确定您的问题所在,从而找到答案。
我们需要了解的第一件事是,当您输入域名时,您的浏览器如何知道该去哪里。您的浏览器将检查您的本地主机文件,然后是您的本地 DNS 缓存,然后向 DNS 服务器发出请求。DNS 服务器要么由您的 ISP / DHCP 自动设置,要么在您的 Internet 连接设置中手动设置。因此,向域名发出请求时,您的浏览器/操作系统将按该顺序检查这些位置以查找匹配条目。如果没有找到条目,则域名将无法解析。
DNS 服务器可以有不同种类的条目。它可以告诉您域名托管在哪里,它可以告诉您子域在哪里,它可以将域名指向另一个 DNS 服务器……它是一个灵活的多用途点,域名可以指向任何地方。此外,根据为域名设置的 DNS 条目类型,您的浏览器将自动知道它是否需要向另一个 DNS 服务器询问域名指向的位置,或者它是否是它正在寻找的最终结果。不正确地设置 DNS 服务器可能会导致用户陷入 DNS 循环 - 其中一个 DNS 指向另一个 DNS,而第二个 DNS 指向第一个 DNS。这些事情很容易弄清楚。
Hosts 文件基本上就像一个本地的、手动设置的类似 DNS 的系统。它允许您说“any.domain”位于“any-ip-address”。通过这种方式,您可以在本地覆盖或忽略其他 DNS 资源。这对本地内容很有用,但是如果您想通过 Internet 或通过许多设备访问内容,我强烈建议您使用 DDNS 服务,我将在下面进行介绍。
---Apache VHost 文件---
在 vhosts 文件中,我设置了一个默认 vhost。这样,如果我输入我的 IP 或没有明确定义虚拟主机的域名,我仍然会从我的 Web 服务器获得某种响应。这只是我的偏好,但完全没有必要。设置默认值后,我明确定义要服务的域/子域。
名称虚拟主机 *:80
##############localhost
ServerAdmin webmaster@localhost DocumentRoot "D:/xampp/htdocs" ServerName localhost
<Directory "D:/xampp/htdocs">
AllowOverride All
Order Allow,Deny
Allow from all
Require all granted
</Directory>
########othersite.local.whatever
ServerAdmin webmaster@localhost DocumentRoot "D:/xampp/othersite.local.whatever" ServerName othersite.local.whatever AllowOverride All Order Allow, Deny Allow from all 要求全部授予
保存 VHost 文件后,重新启动 apache。如果 apache 启动然后自动停止运行,那么您的 apache 配置/Vhosts 文件中可能有错误,请仔细检查您的工作,在保存您所做的每个更改后尝试启动 apache 直到它工作。
---Windows 主机文件---
除非您有 DNS 服务器设置,否则您将需要修改 Windows 主机文件,以便告诉您的机器 othersite.local.whatever 指向您的 apache 服务器。该文件的作用是在本地将域名指向一个 IP 地址。它不会影响其他计算机,仅适用于同时运行您的服务器的这台计算机。
主机文件位于 C:/windows/system32/drivers/etc/hosts
根据您的 Windows 权限,您可能需要先将 hosts 文件复制到桌面,使用记事本或收藏夹文本编辑器打开它,进行修改,保存并将其复制回原来的位置。在新行上,添加一个新条目:
127.0.0.1 othersite.local.whatever
将主机文件保存回 C:/windows/system32/drivers/etc/ 后,您现在应该能够毫无问题地访问服务器计算机上的 othersite.local.whatever。如果您有其他本地 Windows 计算机,您可以修改它们的主机文件以指向服务器的 IP 地址(通常类似于 192.168.1.xx),以便这些计算机也可以访问位于 othersite.local.whatever 的虚拟主机。
192.168.1.?? othersite.local.whatever
---通过其他方式解决您的问题---
根据您的需求,您可以做几件事。
1)修改所有windows电脑上的vhost文件,研究一下如何在其他设备上做。如果所有设备都认为 othersite.local.whatever 指向您的服务器,则您的服务器应该使用正确的虚拟主机页面进行响应。这就是它在本地网络或 WAN / Internet 上的天气工作方式。
2) 设置本地 DNS 服务器,将您的所有设备指向您的 DNS,并在您的 DNS 中添加一个条目以将域指向您的服务器。如果您以前从未做过,这是一项复杂的任务,但您可能会发现它很有用。
3) 设置动态 DNS (DDNS)。这个有点复杂,但实际上很容易做到。它真的可以帮助你打开你的选择。
以下是它的工作原理 - 您的家庭互联网连接的 WAN IP 可能会不时更改 - 由您的 ISP 的 DHCP 服务分配的动态 IP。如果您关闭互联网调制解调器然后再次打开,您的 IP 可能会发生变化。这不好,因为如果您有一个外部 DNS 或以某种方式指向您的 IP 的链接,并且您的 IP 更改是因为您的电源关闭然后打开或 DHCP 使用新 IP 更新了您的 IP 租约,那么您将被切断从你的服务器。所以为了解决这个问题,我们有一个叫做动态 DNS 的东西。你注册了一个 DDNS 服务(其中许多是完全免费的),你在你的 PC 上运行了一个小的 DDNS 程序。DDNS 程序每隔几分钟检查一次您的 IP 地址,并使用您的 IP 更新 DDNS 服务器。如果您的 IP 发生变化,
要完成所有设置,您需要设置本地 Internet 连接以将端口 80 上的传入连接(您的网站可能在 80 上运行,除非您更改它)转发到您的 Web 服务器。将服务器的本地 IP 地址设置为静态地址(因此它不会在您的本地网络上更改,您知道类似 192.168.1.100 或任何适合您需要的地址)并修改您的互联网网关/调制解调器/路由器以转发端口 80 上的所有内容到您的服务器 PC。
我喜欢使用名为 No-IP ( http://no-ip.com/ ) 的免费 DDNS 服务。它是免费、简单和可靠的。与他们一起创建一个帐户,选择一个子域 - 您可以使用 something.bounceme.net 或其他预定的免费 DDNS 名称。选择名称后,在您的服务器 PC 上安装 DDNS / No-IP 程序。现在,something.bounceme.net 将始终转到您的家庭 IP。如果您正确设置端口转发,端口 80 上的任何内容都会自动转到您的网络服务器。
现在最后一步是获取一个普通域名来指向您的家庭 IP,而不是 something.bounceme.net。你可以支付 No-IP 来做一些花哨的事情,或者你可以免费的方式来做,这就是我将在这里解释的方式。
上次我使用 Godaddy 作为域名注册商,一切都发生了很大变化,您可能需要致电 Godaddy 或您的域名注册商,询问您可以在哪里/如何使用他们的服务进行此操作。
首先,您需要一个域名。假设您拥有 homesite.com,还假设您希望laptop.homesite.com 指向您的家庭网络服务器。
对于域 homesite.com,添加 CNAME 类型的 DNS 记录,其键为“laptop”,您的 DDNS 名称值为“something.bounceme.net”。这将使laptop.homesite.com 将解析为您的家庭IP 地址。说得通?现在,当您键入laptop.homesite.com 时,DNS 将告诉它检查something.bounceme.net,这将解析为您的家庭IP。
CNAME 条目有一些限制。您不能只将“homesite.com”转发到您的 DDNS IP。您基本上必须使用子域条目,例如笔记本电脑或家庭或类似的东西。但是,您可以做的一件事是使用“子域”条目 WWW,以便 www.homesite.com 指向您的家庭 IP。如果您使用 Godaddy,您将获得一个带有您的域名的免费受限托管帐户,该帐户上会显示 Godaddy 广告。您可以为“homesite.com”设置此帐户并在其中放置一些重定向代码以将用户发送到“www.homesite.com”。这样,人们键入 homesite.com 并自动发送到 www.homesite.com。
我希望这一切都是有道理的。
所以让我们回顾一下 - 设置您的服务器静态 IP,设置端口转发,使端口 80 指向您服务器的本地 IP,设置 DDNS(如http://www.no-ip.com)并安装他们的 DDNS 程序,设置 CNAME与您的域名注册商联系,以便 www.yoursite.com 指向您的主服务器(CNAME www -> your-ddns-url.bounceme.net)。现在,您应该能够从世界任何地方访问您的服务器,网址为 www.yoursite.com,从本地互联网连接内部或从星巴克。
您还可以为 FTP 服务器(通常为 21)设置端口转发,以远程编辑您的网站或访问您的主文件。当您可以远程访问您的家用 PC 时,您可以做各种事情。
我希望这个简短的演练将帮助您了解在所有设备上访问 apache VHost 所需的每个部分。我喜欢使用 DDNS 设置/选项,因为您不需要为每个设备或类似的东西设置主机文件。就像访问普通网站一样!
欢迎提问或评论。我真的只是把这一切都写在我的头上,我希望它有帮助。