从局域网外部访问虚拟主机

从局域网外部访问虚拟主机

我正在设置一个 Web 开发平台,以便尽可能轻松地在本地计算机上编写和测试所有代码,并将其与 Web 服务器同步。我设置了几个虚拟主机,这样我就可以通过输入“project”而不是“localhost/project”作为 URL 来访问我的项目。

我还想进行设置,以便可以从任何网络访问我的项目。我注册了一个指向我计算机 IP 地址的 DYNDNS URL。

在我设置虚拟主机之前,这在任何地方都运行良好。现在,当我尝试通过输入我的 DYNDNS URL 来访问我的项目时,我收到 403 禁止错误消息,“您无权访问此服务器上的 /。”

为了设置我的虚拟主机,我编辑了两个文件 - system32/drivers/etc 文件夹中的 hosts 和我的 WAMP 安装的 Apache 文件夹中的 httpd-vhosts.conf。

在 hosts 文件中,我仅添加了与 127.0.0.1 关联的服务器名称。我在 http-vhosts.conf 文件中添加了以下内容:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "c:/wamp/www/ladybug"
    ServerName ladybug
    ErrorLog "logs/your_own-error.log"
    CustomLog "logs/your_own-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

知道为什么我无法通过输入 DYNDNS URL 来访问我的项目吗?此外,是否可以设置虚拟主机,以便当我输入http://项目我可以从我的网络之外的随机计算机访问 url.dyndns.info/projects (又名我家用计算机上的 WAMP 项目)吗?

非常感谢您的帮助,谢谢!

答案1

您的服务器名需要 FQDN(完全限定域名)才能外部工作。

配置示例:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "c:/wamp/www"
    ServerName url.dyndns.info
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

您还需要通过路由器打开端口 80 并将其转发到内部服务器 IP 地址。

你不能只使用http://项目连接到您的服务器,除非您配置 DNS 服务器并使用它。

答案2

正如 ffreedon_is_chaos 指出的那样,您需要使用 FQDN 从外部获取服务。

除了服务器名称之外,您还可以添加服务器别名,这将允许您使用其他名称访问域,这意味着您仍然可以在内部使用非 FQDN。例如

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "c:/wamp/www/ladybug"
    ServerName ladybug.something.com
    ServerAlias ladybug www.ladybug.something.com
    ErrorLog "logs/your_own-error.log"
    CustomLog "logs/your_own-access.log" common
</VirtualHost>

相关内容