通过局域网访问另一台计算机上的本地主机(xampp) - 如何实现?

198

我刚刚在家里建立了一个Wi-Fi网络。我的桌面电脑上有所有文件(192.168.1.56),我想从另一台电脑(192.168.1.2)访问那里的localhost。

在我的桌面电脑上,我可以通过普通的http://localhost访问本地主机。Apache像往常一样运行在80端口。

我该怎么做才能实现这个目标?网上有文档,但它们要么不起作用,要么过于零散和混乱,难以理解。

我认为我需要更改Apache的httpd.conf文件和hosts文件。您有什么关于如何进行更改的想法吗?


2
可能对此问题感兴趣的人可以参考以下链接:如何在同一网络上的另一台计算机上连接到本地主机? - Martin Thoma
1
以下是我在Windows 10上的实践方法:打开命令提示符并输入ipconfig,找到您的IPv4地址,然后将您的网站URL重命名为该IP,例如:http://192.168.0.2/example。然后在Windows中搜索“允许应用程序通过Windows防火墙”,单击它,然后单击更改设置,确保HTTP Apache服务器被选中。希望能有所帮助。 - csandreas1
我有一个名为app.sitename.com的网站。现在,我可以使用IP地址在同一网络中的另一台电脑上访问该网站。如何使用子域名进行访问。app.ipaddress.com不起作用。我该怎么做才能在远程计算机中添加子域名? - vicky
26个回答

137

Localhost是回环地址的名称,类似于用“我”来称呼自己。

要从其他计算机查看它,您可能只需要输入 http://192.168.1.56 或者 http://myPcsName。如果这样做仍然无法访问,有可能是您的计算机上运行了防火墙,或者httpd.conf仅在127.0.0.1上监听。


1
那只是在80端口上监听,很有可能已经在监听了。 使用netstat -a命令,在80端口上查找项目,它会告诉你正在监听哪个IP地址。 - BugFinder
2
这意味着它正在监听端口80上的任何请求,而不仅仅是本地主机,因此,如果您的计算机名为vr3609,则访问http://vr3609将带您进入您的网站。 - BugFinder
1
如果您从服务器http到服务器的IP地址,是否可以正常工作?如果是,则表明服务器上有防火墙阻止其他计算机访问它。 - BugFinder
当我在台式电脑上使用http://192.168.1.56时,能够看到该网站。因此,我猜测这是防火墙问题。我该如何解决? - bcosynot
1
好的,192.168.1.56,那是右边网站的那个吗?您需要查看其配置。它运行什么操作系统?安装的防火墙软件因此而异。您需要找出它上面安装的防火墙软件,然后弄清楚如何将端口80添加到其中以允许其他计算机进入。如果它是Windows,则很有可能是您的杀毒软件的一部分,或者甚至可能是微软自己的防火墙。如果是Linux,则很有可能是ipchains,但这是一个全新的问题领域。 - BugFinder
显示剩余10条评论

66

很容易

  1. 进入您的XAMPP控制面板
  2. 点击apache > config > Apache (httpd.conf) 图片描述
  3. 查找Listen 80并替换为Listen 8080
  4. 然后使用ipconfig命令(cmd控制台)检查本地IP地址
  5. 查找ServerName localhost:80并替换为您的本地IP地址:8080(例如192.168.1.156:8080)
  6. 然后打开apache > config > Apache (httpd-xampp.conf) 图片描述
  7. 搜索

       <Directory "C:/xampp/phpMyAdmin">
           AllowOverride AuthConfig
           **Require local**   Replace with   **Require all granted**
           ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
       </Directory>```
    
    
  8. 进入xampp > config > 点击服务和端口设置,更改Apache端口为8080

  9. 重启xampp
  10. 然后在另一台计算机上访问你的IP地址:8080(例如192.168.1.156:8080)

如果不是所有的授权,而只是一个静态IP地址,那会怎样呢? - Alejandro Maliachi Quintana
1
在我的电脑上可以正常工作,但在另一台电脑上无法工作。 - MH Fuad
这对我不起作用。我收到了一个证书错误:服务器证书不包括与服务器名称匹配的ID。 - Jon Vote
嗨@Rahul Shewale,这适用于IP,但如何使其适用于域名/子域名?例如portal.localhost - Ingus
这会让我的电脑更容易受到攻击吗(局域网之外)? - Kishita Variya
你不需要改变HTTP端口。局域网上的Web服务器应该能够在默认端口80上提供HTML页面。 - undefined

57

感谢您提供详细的解释。

仅作说明,在Windows系统上,前往控制面板 -> 防火墙,在“例外”中添加"http and port 80"。然后在服务中勾选“http(Web服务器端口80)”和“https(Web服务器端口443)”,仅当您需要使用https时。点击"确定","关闭"

然后在任何连接到网络的计算机上,在您的Web浏览器中键入http://computer-name(其中您更改了防火墙并且xampp在其上运行),那么就可以开心地使用了 :)


23
我进入了“控制面板”>“Windows防火墙”>“允许应用程序通过Windows防火墙”>“允许其他应用程序”>浏览到:XAMPP/apache/bin/httpd.exe 并进行了允许。现在它可以工作了! - shasi kanth
谢谢。工作正常。 - jewelhuq
要添加Windows防火墙例外,您可以访问以下链接了解如何操作:https://www.tomshardware.com/news/how-to-open-firewall-ports-in-windows-10,36451.html - alejnavab
1
@shasikanth,你应该把它作为一个答案添加进去。对我很有效。 - Valkay

24

以下是在LAN服务器(而非Web)上安装PHP应用程序的步骤:

  1. 获取服务器的内部IP或静态IP(例如:192.168.1.193)
  2. 在记事本中打开XAMPP > apache > conf > httpd.conf文件
  3. 搜索Listen 80
  4. 上一行应该像这样 - #Listen 0.0.0.0:80 / 12.34.56.78:80
  5. 更改IP地址并将其替换为静态IP
  6. 保存httpd.conf文件,确保服务器指向# Listen 192.168.1.193:80
  7. 在应用程序根目录的config.php(数据库连接)中,将localhost替换为服务器的IP地址

注意: 如果已安装防火墙,请确保将HTTP端口80和8080添加到例外并允许进行监听。 转到控制面板> Windows防火墙> 允许程序通过Windows防火墙进行通信> 添加另一个程序 名称:http 端口:80 再添加一个作为http-8080

如果已使用任何Microsoft .Net应用程序安装了IIS(Microsoft .Net Application Internet Information Server),则它已经占用了80端口。在这种情况下,将#Listen 192.168.1.193:80更改为#Listen 192.168.1.193:8080

希望这可以帮到您! :)


这个对我解决了问题。太棒了!我以前总是删除本地IP地址前面的#,但它并没有起作用,当我包括注释符号#时,它出乎意料地正常工作,而不需要重新启动虚拟机,只需重启XAMPP Apache服务就可以使用了。不错。现在我该如何将其链接到主机上分配的虚拟主机? - lowtechsun
要从客户机访问主机上分配的VirtualHosts,我只需在客户机的HOSTS文件中输入主机的IP和VirtualHost服务器的名称即可。完成。有人知道如何使用Fiddler捕获来自客户机浏览器到主机Apache服务器的流量吗?在主机上工作但无法从客户机获取流量。 - lowtechsun
嗨,IP地址范围怎么设置?例如:192.168.1-100。 - dkjain

7
有时你的防火墙可能会是问题所在。确保你已经禁用了杀毒软件的防火墙监控。这对我很有效。

6
如果有人仍然觉得困难,这个简单的方法对我有效:
1. 在您的主系统上,例如Hosting PC... 进入控制面板 > Windows Defender防火墙 > 允许应用程序或功能通过Windows Defender防火墙 > 更改设置 > 找到"Apache HTTP Server" > 选中两个复选框(在私人和公共下)。 查看屏幕截图 - 在我的情况下,有两个"Apache HTTP Server"条目,因此我为两个条目都选中了两个复选框。
2. 在任何连接到同一网络的其他系统上... 打开浏览器 > 在url栏中输入:您的hosting pc的IP地址,后跟您的项目名称。例如:192.168.72.111/example.com/
希望能对您有所帮助! 谢谢。

5

请到任务栏中的xampp-control

xampp-control -> Apache --> Config --> httpd.conf

记事本将会打开配置文件

搜索以下内容

Listen 80

在它的上一行,会有类似于这样的内容:12.34.56:80

将它修改

12.34.56:80 --> <your_ip_address eg:192.168.1.5>:80

重启Apache服务并检查,希望它能正常工作...


1
对不起,这对我不起作用。此外,这是一个重复的答案。 - greendino

5

以下是基本设置所需的全部内容。

这种配置不会破坏本地主机上的phpMyAdmin。

建议在运行服务器的设备上使用静态IP。

此示例使用192.168.1.x IP。您的网络配置可能使用不同的IP。

在Apache的httpd.conf文件中,您应该有:

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

我会将名称留空,这样它就会使用默认值:

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#

允许虚拟机和你自己访问。出于安全考虑,你可以避免使用Allow from all,而是使用特定的虚拟机IP,例如Allow from 192.168.1.xxx,其中xxx是虚拟机的IP地址。在这种情况下,你可能需要考虑对虚拟机使用静态IP。

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

重新启动所有服务并从托盘图标中设置为在线状态


4
如果您正在使用XAMPP 1.8.3, 请导航到文件httpd-xampp.conf并查找
" # # 新的XAMPP安全概念 #
server-status | server-info))">
     Require local
     ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
     </LocationMatch>

将这段代码剪切并保存到其他地方,以备日后需要还原此功能使用(请注意,删除此代码会使您的计算机容易受到攻击)。在 httpd-xampp.conf 上保存更改,在 XAMPP 上重新启动服务,就完成了。


对于 XAMPP 7 版本,"Require local" 位于文件 apache/conf/extra/httpd-vhosts.conf 中。 - vivanov

4

从远程设备访问本地主机

前提条件:您的网站当前在使用像live-server这样的工具,并且位于http://localhost:8081/

a) 在同一网络中发布

在同一网络中,您可以通过当前IP地址或主机名访问您的计算机。您可以运行ipconfig | grep IPv4来查找IP地址,或通过发送ping -a到该IP地址来查找主机名。

http://<i>192.128.1.18</i>:<b>80</b>/
http://<i>hostname</i>:<b>80</b>/

注意: 为了获得最佳效果,请使用端口80,在私有网络上进行连接,并检查您的防火墙设置。

b) 在任何网络上发布 (更容易)

  1. Opt 1 - You can use ngrok to provide port forwarding over ngrok's public facing ports

    Download ngrok and run the following command:

    $ ./ngrok http <b>8081</b>
    

  2. Opt 2 - You can use localhost.run to create a ssh tunnel with the following command:

    ssh -R 80:localhost:<b>8081</b> <i>kylemit</i>@ssh.localhost.run
    


从本地 Dev 工具访问远程设备

要将浏览器的开发工具与已连接的设备连接起来,请按照开始使用 Android 设备的远程调试中的说明进行操作。

  1. 在您的手机上启用“开发人员选项”和“USB 调试”
  2. 通过 USB 将手机连接到计算机,并设置协议(不是文件 / 媒体传输)
  3. 打开 Dev 工具 > 更多工具 > 远程调试(如果无法检测到设备,请在此处尝试)

  4. 找到您的网站并单击“检查”,这将打开一个新的检查器窗口


进一步阅读:


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