【问题标题】:Wamp - access project via IP instead of localhostWamp - 通过 IP 而不是 localhost 访问项目
【发布时间】:2018-09-28 11:45:35
【问题描述】:

我尝试将我的项目设为“公开”,以便局域网中的每个人都可以访问它。 目前我只能通过http://localhost/project 或他们的虚拟主机名访问我的项目,例如http://myVirtualHostName.

我需要在我的整个 LAN 中都可以访问这些项目,例如像这样:

http://192.168.1.123/projecthttp://192.168.1.123/myVirtualHostName

但如果我尝试从自己的客户端或局域网中的另一台计算机访问项目,我会收到403 Forbidden: You don't have permission to access /projectName/ on this server.


编辑: 我能够解决第一个问题,感谢answer,我现在可以访问C:\wamp64\www 下的链接,方法是更改​​C:\wamp64\bin\apache\apche2.4.33\conf\extra\httpd-vhosts.conf 中的以下块

来自

<VirtualHost *:80>
  ServerName localhost
  ServerAlias localhost
  DocumentRoot "${INSTALL_DIR}/www"
  <Directory "${INSTALL_DIR}/www/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName localhost
  ServerAlias localhost
  DocumentRoot "${INSTALL_DIR}/www"
  <Directory "${INSTALL_DIR}/www/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

...并在它之后重新启动 apache。

现在我可以像http:\\192.168.1.123\myProjekt 一样访问C:\wamp64\www 中的项目。但是我仍然不知道如何使用我的服务器 ip 地址访问虚拟主机。

如果我尝试http://192.168.1.123/myVhostName,那么我会得到Not Found The requested URL /myVhostName was not found on this server.,即使为每个virtual host 设置了Require all granted

我还重新启动了 DNS 服务器。


我该如何解决这个问题?

我正在使用 WAMP 3.1.3。

【问题讨论】:

    标签: apache wamp virtualhost


    【解决方案1】:

    好的,首先因为您似乎不了解虚拟主机是什么以及它的用途,所以我先做一点解释。

    虚拟主机是一种让一个 Apache 为多个站点提供服务的方法,就像您拥有多个 Apache 一样。正确配置后,Apache 会查看传入连接的域名并尝试将其与 VH 定义匹配。如果可以,它会从该 VH 中定义的 DocumentRoot 为该站点提供服务。

    如果它不能匹配域名,它将服务于定义文件中的第一个 VH。这就是为什么您首先定义localhost 并始终将访问权限设置为Require local 的另一个原因,这将告诉客户您无权访问,如果他们只使用您的 WAMPSevrer 的 IP 地址而不是一个有效的域名。

    从 WAMPServer V3 开始,甚至 localhost 也被定义为虚拟主机。

    所以首先保留localhost VH 定义的原样,就像这样,但是使用Require local,因为您永远不想允许使用上面的工具远程访问 WAMPServer 主页,因为它无法从远程正常运行客户端,因为大多数工具都假定localhost,当从客户端运行时它不会存在,因为它总是假定在this PC 即客户端。

    <VirtualHost *:80>
      ServerName localhost
      ServerAlias localhost
      DocumentRoot "${INSTALL_DIR}/www"
      <Directory "${INSTALL_DIR}/www/">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
    

    现在将您的真实站点定义为另一个 VH。我假设它会被称为example.local,但在任何地方都可以将它更改为您希望该站点真正被调用的任何内容。

    <VirtualHost *:80>
        ServerName example.local
        ServerAlias www.example.local
        DocumentRoot "${INSTALL_DIR}/www/example"
        <Directory "${INSTALL_DIR}/www/example/">
            Options +Indexes +Includes +FollowSymLinks +MultiViews
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

    注意:DocumentRoot 文件夹甚至不必位于 ${INSTALL_DIR}/www/ 中,它可以位于该磁盘上的任何位置,甚至可以完全位于另一个驱动器上。

    现在您还说您有一个现场 DNS 服务器。所以让管理员定义example.local 并将其指向运行WAMPServer 的PC 的IP 地址。这应该可以通过使用域名example.localwww.example.local 从使用该 DNS 服务器的任何 PC 轻松访问

    如果您想要更高的安全性,您可能还想让Require 更具体,因此如果该站点仅在一个子网上运行,请将Require all granted 修改为

    Require ip 10.30.20
    

    注意,我只使用了 IPV4 地址的前 3 个四分位数,这将授予对该段中任何客户端 IP 的访问权限。

    如有任何问题,请发表评论,我会尽快回复您。

    【讨论】:

      【解决方案2】:

      我刚刚将 line:DocumentRoot 更改为:

      c:/wamp64/www 
      

      到:

      c:/wamp64/www/myproject 
      

      它对我有用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-12
        • 1970-01-01
        • 2018-02-24
        • 2017-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-21
        相关资源
        最近更新 更多