如何让本地网络用户访问我的WAMP站点?

145

首先,我阅读了至少20篇关于这个主题的文章,但没有一篇能够匹配场景,我也多次搞砸了这个过程。因此,我提供了我的具体方案,并请求帮助。

笔记本电脑或其他设备通过无线路由器连接。

我尝试过:

  • 在防火墙上启用80端口。没有任何反应。
  • 运行pingipconfig并尝试IPv4地址,在那里被拒绝访问或带到我的ISP Verizon和路由器配置页面。
  • 尝试配置Apache,一团糟,从众多帖子中始终无法设置所有授权,并尝试了其中一个有希望的方法,结果导致我的WAMP崩溃,必须经历所有麻烦并重新安装。

我真正想要实现的目标非常简单,即允许所有连接到无线路由器的用户都能够访问我的Win8托管的WAMP站点。

我想知道是否有任何特定的步骤,可以让它真正地工作?

WAMP 2.4安装在Win8.1上。 笔记本电脑主机本地站点。

11个回答

303

如何在WAMPServer 3中实现请看本文结尾处

对于WampServer 2.5及之前的版本

WAMPServer是为单个开发者设计的工具。因此,默认情况下,Apache仅允许从运行服务器的PC即localhost或127.0.0.1或::1访问。

但由于它是完整版本的Apache,您只需要了解一点关于您使用的服务器的知识。

最简单(杀鸡焉用牛刀)的方法是使用“Put Online”wampmanager菜单选项。

left click wampmanager icon -> Put Online

然而,这告诉Apache它可以接受来自宇宙中任何IP地址的连接。只要您没有在路由器上端口转发端口80,或将来永远不会尝试这样做,这并不是问题。

更明智的方法是手动更改Apache访问安全性,编辑httpd.conf文件(再次使用wampmanager菜单)。

left click wampmanager icon -> Apache -> httpd.conf

这将在记事本中打开httpd.conf文件。

查找文件中的这个部分

<Directory "d:/wamp/www">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
#    Require all granted
#   onlineoffline tag - don't remove
     Order Deny,Allow
     Deny from all
     Allow from 127.0.0.1
     Allow from ::1
     Allow from localhost
</Directory>

假设你的本地网络子网使用地址范围192.168.0.?。

Allow from localhost之后添加此行。

Allow from 192.168.0

这将告诉Apache它可以从该子网上的任何IP地址访问。当然,您需要检查您的路由器是否设置为使用192.168.0范围。
这很容易通过从命令窗口输入此命令ipconfig并查看标记为IPv4地址的行来完成。然后,您使用其中看到的地址的前3个部分。
例如,如果您的地址看起来像这样:
IPv4 Address. . . . . . . . . . . : 192.168.2.11

你需要使用:
Allow from 192.168.2

适用于Apache 2.4用户的更新

当然,如果你正在使用Apache 2.4,则此语法已更改。

你应该替换掉所有这个部分:

Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
Allow from localhost

使用新的Apache 2.4语法,可以这样做:

Require local
Require ip 192.168.0

你不应该仅仅将这个添加到 httpd.conf 文件中,而是必须进行替换。

对于 WAMPServer 3 及以上版本

在 WAMPServer 3 中,默认情况下已定义了虚拟主机。因此,上述建议不起作用。您不再需要对 httpd.conf 文件进行任何修改。您应该将其保持原样。

相反,将服务器设置为 OFFLINE,因为这个功能已经失效并不再起作用,这就是为什么 Online/Offline 菜单变成可选项并默认关闭的原因。

现在,您应该编辑 \wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf 文件。在 WAMPServer3.0.6 及以上版本中,实际上有一个菜单可以在您的编辑器中打开此文件。

left click wampmanager -> Apache -> httpd-vhost.conf

就像一直存在的那个编辑你的httpd.conf文件的工具。

如果你没有添加自己的虚拟主机,它应该是这个样子的。

#
# Virtual Hosts
#

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot c:/wamp/www
    <Directory  "c:/wamp/www/">
        Options +Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

现在,只需更改Require参数以适应您的需求。例如,如果您想从任何地方允许访问,请将Require local替换为:
Require all granted

如果您想更加具体和安全,只允许在您的子网内的IP地址访问,可以添加以下访问权限以允许任何位于您的子网中的电脑。
Require local
Require ip 192.168.1

或者更具体地说
Require local
Require ip 192.168.1.100
Require ip 192.168.1.101

2
一个问题。我有各种本地站点(即192.168.1.1/mysite1),但是当我尝试在手机上访问该网站时,由于某种原因它显示不完整。这是一个WordPress网站。您知道发生这种情况的原因吗? - ey dee ey em
2
哦,我找到问题了,因为在数据库中,那些链接是基于本地主机的!现在一切都完美了 :D - ey dee ey em
1
似乎在最新版本的Apache即2.4中,Allow from已被弃用。根据我查阅的文档,替代方案是使用Require。但是,我尝试了Require Host 192.168.1Require ip 192.168.1,但无法通过网络访问! - KillABug
6
@RiggsFolly,我已经这样做了,但它仍然不起作用。403禁止访问。 - gegobyte
1
httpd.conf 文件中我应该做什么? - chirag satapara
显示剩余18条评论

87

必须允许防火墙通过Apache进程(httpd.exe)(建议)。

或在局域网上禁用防火墙(仅用于测试,不建议)。

使用Wamp的示例(启用了Apache):

  1. 检查是否在本地发布了Wamp,如果是,请继续;
  2. 访问控制面板
  3. 单击“防火墙”
  4. 单击“允许应用程序通过防火墙”
  5. 单击“允许某些应用程序”
  6. 查找并选择C:/wamp64/bin/apache2/bin/httpd.exe
  7. 重启Wamp

现在在另一台主机上打开浏览器,并通过IP访问您的Apache服务器(例如192.168.0.5)。 您可以通过在命令提示符中键入ipconfig来发现本地主机IP。

它很有效。


确保您的Wamp服务器正在运行,并且您已经通过“上线”设置使其可用。 - Matteus Barbosa
清除浏览器缓存也可能解决一些问题。 - Matteus Barbosa
6
防火墙部分对我在 Windows 10 上的帮助很大。谢谢! - Pretty Cool
我已经禁用了Windows防火墙,所以我认为这不会起作用 - 但是将Apache添加为例外确实对我有用。谢谢! - Pawel
@Pawel,这没有意义,因为禁用的防火墙会忽略异常表并允许所有内容。请确保您的杀毒软件已禁用或其防火墙层也已禁用以进行干净的测试。 - Matteus Barbosa

15
go to... 
C:\wamp\alias

在别名文件夹内,您将看到一些文件,例如phpmyadmin、phpsysinfo等...

打开每个文件,您可以看到一些已注释的指示,以便从外部访问,例如 要允许从外部访问phpmyadmin, 请替换这些行

Require local

by

Require all granted

6

对我最终起作用的是我在这里找到的方法:

http://www.codeproject.com/Tips/395286/How-to-Access-WAMP-Server-in-LAN-or-WAN

概括一下:

  • httpd.conf中设置监听:

    Listen 192.168.1.154:8081

  • 在此部分中添加“允许全部”:

    <Directory "cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>

  • 设置一个入站端口规则。我认为这是我丢失的关键部分:

太棒了!接下来的步骤是打开服务器的端口(8081),以便每个人都可以访问您的服务器。这取决于您使用的操作系统。如果您使用的是Windows Vista,则按照以下步骤操作。

打开控制面板 >> 系统和安全 >> Windows防火墙,然后单击“高级设置”,然后从左侧面板中选择“入站规则”,然后单击“添加规则...”。从列表中选择“端口”作为选项,然后在下一个屏幕中选择“TCP”协议,并在“特定本地端口”下输入端口号“8081”,然后单击“下一步”按钮,选择“允许连接”,然后给此端口命名和描述并单击完成。

现在您还需要“重新启动WAMP的所有服务”,并在局域网或广域网中访问您的计算机。


192.168.1.154代表什么? - Charlesliam
1
@Charlesliam 另一台机器的IP地址 - CodyBugstein

2
多年来,我一直使用WAMP来管理多个虚拟主机,并且在WAMP机器上一切正常。几天前,在将网站发布到线上之前,我需要在局域网中的其他计算机上测试其中一个站点。
以下是我的设置,主要基于此帖子中的答案/评论:
- 所有托管在WAMP服务器上的站点都有一个“域名” .local(mydomain*.com => mydomain*.local) - 对于所有站点,http流量都被重定向到https
为了使其在所有局域网计算机上工作,需要进行以下更改:
- httpd.conf - 不需要更改,也不必将WAMP Online放置在其中 - 对于httpd-vhosts.conf中的所有vhosts(以及启用https的站点的httpd-ssl.conf),需要在Directory部分进行更改
#Require local
#Require all granted # also works
#Allow from all # works for all LAN
Allow from 192.168.55.*
  1. 在Windows防火墙中启用httpd.exe
  2. 为本地网络中每个mydomain*.local设置DNS记录,需要在每台计算机的hosts文件中进行配置

192.168.55.221 mydomain*.local

其中192.168.55.221是WAMP服务器的地址。如果您使用本地DNS服务器(例如Pi-hole),可以在那里进行配置。

更新:如果本地网络中有设备使用VPN,并且DNS服务器地址设置在路由器上,则DNS服务器方法对这些设备无效。您必须在主机文件中设置DNS记录!

此设置适用于所有Windows PC、平板电脑/手机和VMWare上的Win虚拟机。奇怪的是,在Ubuntu 20.04上(在VMWare和Raspberry PI4B上)无法正常工作。我想我必须学习如何在Ubuntu上设置DNS!


1
因为我刚刚经历了这个问题,所以即使这篇文章有点旧,我也想提供我的解决方案。我在家用路由器连接了几台电脑,并且一直在为自己的项目努力。好吧,我想看看它在我的移动设备上是什么样子的。但是WAMP设置成只能从开发系统访问。所以我开始四处寻找并找到了这篇文章以及其他一些文章。问题是,它们都对我无效。所以我只能自己解决这个问题。
我的解决方案:
首先,在HTTPD.CONF文件中,您需要在可以访问您的WAMP服务器的设备列表末尾添加一行。所以不是:
#    Require all granted
#   onlineoffline tag - don't remove
     Order Deny,Allow
     Deny from all
     Allow from 127.0.0.1
     Allow from ::1
     Allow from localhost

使它成为:
#    Require all granted
#   onlineoffline tag - don't remove
     Order Deny,Allow
     Deny from all
     Allow from 127.0.0.1
     Allow from ::1
     Allow from localhost
     Allow from 192.168.78

上面的内容表示,任何连接到您路由器的设备('78'只是为此解决方案选择的任意数字。它应该是您的路由器设置的任何内容。因此,它可能是192.168.1或192.168.0甚至是192.168.254-您必须在路由器上查找。)现在可以访问您的服务器。
上述对我没有任何作用-起初如此。还有更多需要做的事情。但首先-您不需要做什么。您不需要将WAMP设置从离线更改为在线。对于我来说-更改该设置不会产生任何效果。未知原因-它就是这样。所以,如果您想要更改它-但我认为不需要更改。
那么还需要改变什么?您必须回到httpd.conf文件的开头进行下一个更改,这非常简单。您必须在

之后添加一行新行。
Listen Localhost:80

添加

Listen 192.168.78.###:80

当 "###" 是你的服务器IP时,使用上述命令。例如,如果你的服务器IP是234,则上述命令应该变为:

Listen localhost:80
Listen 192.168.78.234:80

再次说明,“78”只是我随意选择的数字。要获取您的真实IP地址,您需要打开命令窗口并输入

ipconfig/all

命令。查找您的TCP / IPv4号码并将其设置为该号码或TCP / IPv6(如果这是您拥有的所有内容)(尽管在内部路由器设置中,您通常具有IPv4号码)。

注意:如果您不知道如何打开命令窗口-请单击“开始”,选择“运行”选项,然后在对话框中键入“cmd.exe”而不使用引号。 在较新的系统上(因为它们不断更改一切),它可能是白色的Windows图标、圆圈或比尔·盖茨跳来跳去。 无论它是什么-请单击它。

完成以上操作后-重新启动所有服务,一切都应该正常运行。

最后,为什么要更改Listen命令?这与本地主机有关。默认情况下,“localhost”设置为127.0.0.1而不是您的IP地址。这可以在主机文件中找到,该文件通常位于Windows的system32文件夹中,但可能已被Microsoft移动到其他位置。在线查找它并查看它。如果您在本地主机文件中看到很多性爱、色情等网站-您需要摆脱它们(除非那是您的喜好)。我建议使用RogueKiller(在AdLice.com上)来检查您的系统,因为它可以为您重置主机文件。
如果您的主机文件正常,则应该只包含一个条目,并且该条目将localhost设置为127.0.0.1。这就是为什么在httpd.conf文件中使用localhost使您只能从服务器计算机上处理和查看所有内容。
因此,如果您感到冒险-更改主机文件并保留Listen命令,或者只需将Listen命令更改为在服务器上侦听端口80。
你可能需要更改你的TCP/IP地址。(我的已经设置好了,所以我不需要这样做。)你需要查找你的操作系统如何到达你的TCP/IP地址定义处。在Windows XP下,这是控制面板->网络连接。在后来的操作系统中,这已经改变了,所以你需要查找如何到达那里。无论如何,一旦到达那里,你会看到你的无线网络连接或本地区域连接(Windows)。基本上是WIFI或以太网电缆。选择正在使用的那个。在Windows下,然后右键单击并选择属性。一个对话框应该弹出,你应该看到一个复选框列表和它们旁边的内容。寻找TCP/IP的那个。应该有一个说TCP/IP v4的。选择它。(如果没有一个,你应该小心处理。)点击属性按钮,你应该得到另一个对话框。这个对话框显示"自动获取IP地址"或"使用下面的IP地址"被选中。如果是第一个,那么你必须将它改为第二个。但在你这样做之前-打开一个命令窗口,并输入ipconfig/all命令,这样你就可以在你面前看到你的默认网关。然后将它从"获取..."更改为"使用..."。在"IP地址"处输入你想要始终使用的IP地址。这是你在上面的Listen命令中输入的IP地址。第二行(子网掩码)通常是255.255.255.0,意味着只有最后一个数字(即:0)会改变。然后,回头看一下命令窗口,输入你的默认网关。最后但并非最不重要的是,当你从"获取..."更改为"使用..."时,DNS设置可能已经改变了。如果处理DNS设置的部分已经改为"使用...",并且为空-答案很简单。只需查看ipconfig/all输出中的DNS设置,并将它们放入提供的字段中。完成后,点击确定按钮,然后点击第二个确定按钮。一旦对话框关闭,你可能需要重新启动系统以使更改生效。通过访问Google或Stack Overflow来尝试它。如果你仍然可以去其他地方-那么不需要重新启动。否则,重新启动。记住!如果之后无法上网,你只需返回并将所有内容重置为"获取..."选项。在更改后,你无法上网的最有可能的原因是你选择使用的TCP/IP地址已经被路由器使用。所谓的"只能有一个"也适用于TCP/IP地址。这就是为什么我总是选择一个高一百个数字或低两百个数字。因为大多数DHCP设置使用小于五十的数字。所以这样你就不会与别人的TCP/IP号码冲突。
这是我解决问题的方法。

你在哪个文件里做的这个? - CodyBugstein
在大多数情况下,Apache httpd.conf 文件和位于 Windows/System32 目录中的主机文件需要进行更改。上述内容需要更新。实际上,您可以在 httpd.conf 文件中拥有多个 LISTEN 命令。因此,您实际上可以依次拥有:Listen localhost:80和Listen 192.168.78.234:80 - Mark Manning
我决定更新关于TCP/IP更改的答案。 - Mark Manning

1
在WAMPServer 3中,您不需要在httpd.conf中进行此操作。相反,编辑\wamp\bin\apache\apache{version}\conf\extra\httpd-vhost.conf并对为localhost定义的虚拟主机进行相同的更改。WAMPServer 3预定义了一个用于localhost的虚拟主机。

0

我有一些在Wamp 3.0和Apache 2.4方面的经验。

完成所有工作后,请执行以下步骤:

1- 禁用nod32。

2- 在httpd-vhosts.conf文件中的<VirtualHost *:80>块中添加此行:

Require ip 192.168.100 #client ip, allow 192.168.100.### ip's access

0

如果你使用Windows,并且做了以上所有的注释,

你可以检查你的网络和共享中心。

网络和共享中心 ->高级共享设置 ->家庭或工作配置文件更改

谢谢,干得好!


-2

这很简单,而且对我真的很有效。

run you wamp server => click right mouse button => and click on "put online"

然后以管理员身份打开您的cmd,并输入此命令词

ipconfig => and press enter

然后会显示很多地址,你只需要选择第一个,它看起来像这个例子:IPv4地址. . . . . . . . . . . . . .: 192.168.67.190 干得好!那就是你要用来连接本地wamp服务器的地址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接