Wamp - 通过IP而不是localhost访问项目

时间:2018-04-18 09:35:55

标签: apache wamp virtualhost

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

我需要在整个局域网中访问项目,例如像这样:

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

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

修改: 通过更改C:\wamp64\www

中的以下块,我可以解决第一个问题,我现在可以通过此answer访问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。

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

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

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

我该如何解决这个问题?

我正在使用WAMP 3.1.3。

2 个答案:

答案 0 :(得分:3)

好的,首先,因为您似乎无法理解虚拟主机是什么以及它用于什么,我将从一点点解释开始。

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

如果它与域名不匹配,它将为定义文件中的第一个VH提供服务。这就是为什么你做出localhost的第一个定义的另一个原因,并始终设置对Require local的访问权限,这将告诉客户如果他们只是使用你的WAMPSevrer&而你没有访问 #39;的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的访问权。

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

答案 1 :(得分:0)

我刚刚将line:DocumentRoot更改为:

c:/wamp64/www 

至:

c:/wamp64/www/myproject 

对我有用!