我正在设置一个 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>