我希望访问托管在我的家庭网络上的另一台本地计算机上的本地开发网站。
我曾尝试使用http://192.168.1.nn并在浏览器中输入http://localhost,但均未找到(我的服务器计算机的静态IP地址为192.168.1.nn)。
当我在计算机 nn 上运行时,我可以毫无困难地访问 localhost 及其网站。
我尝试使用 Windows 设置允许未经身份验证访问 nn 计算机(在 Defender 防火墙中,以及在 Malwarebytes > 设置 > 允许列表 > 添加 > 192.168.1.nn 中)。我尝试使用路由器中的端口转发规则将端口 mm 转发到计算机 nn(并使用地址 http://localhost:mm 或http://192.168.1.nn:mm)。我尝试将此行添加到 Hosts 文件中:
192.168.1.nn 本地主机
我对网络内部结构不太了解。我想在我的一台计算机上建立 LAN-LAN Web 连接,连接到另一台计算机,无需向外界 (WAN) 提供任何访问权限在我的网络上。我希望得到经过测试的答案的帮助,这样它们就可以工作,而不需要太多的问题和答案。
答案1
由于您似乎不愿意出于安全原因提供更多信息,以下是您可能希望查看的一些一般性想法和评论,以帮助解决此问题:
第三方应用程序
测试期间请禁用所有防火墙或病毒扫描程序。第三方应用程序或硬件可能会影响两台计算机之间的通信,超出您制定的任何规则。
如果您在服务器中使用虚拟机,则可能需要对虚拟机本身进行额外配置(除了主机上的任何配置)以允许访问它。
虚拟机软件可能具有“仅主机”虚拟网络适配器选项,这些适配器永远不会被视为本地网络的一部分。请确保您没有尝试通过分配给任何“仅主机”网络适配器(如果存在)的 IP 进行远程访问。
虚拟机可能需要端口转发(通过虚拟机的软件)才能访问它们,假设它们没有运行桥接适配器。
如果您正在使用 WSL,则可能需要专门更新它或对 Windows 进行一般更新。
本地网络
确保计算机位于同一个本地网络上。检查所有路由器上的网络掩码。它们通常应该相同。还要验证所有网络 DHCP 服务器(同样,最有可能位于路由器等上)是否正在向您希望连接的任何设备分发相同范围的本地地址。
假设网络掩码为,例如
255.255.255.0
,如果您的服务器的地址为 ex,http://192.168.1.nn
而您用来访问服务器的计算机的地址为 ex,http://192.168.2.nn
则它们不在同一个本地网络上。除非您有未指定的特殊网络设置,否则路由器中的端口转发对于同一网络上的设备之间的基本通信来说是不必要的。
如果您尝试使用移动设备从本地网络访问您的服务器,请确保您使用的是 Wifi 而不是运营商的数据计划(因为这仅对测试 WAN 访问有用)。
一般来说,您应该只使用路由器分配的本地地址(即,而不是 ISP 分配的任何 IP)。
广义上讲,使用多个路由器、使用 Wifi 接入点或使用“高级”网络设备(例如网状网络硬件)可能会(理论上)导致问题。
主机名
该
hosts
文件仅适用于它所在的计算机。因此,hosts
服务器上的文件将不允许本地网络上的其他计算机解析它指定的任何主机名。hosts
尝试访问的计算机上的文件将是需要修改的文件。localhost
不是一个任意的名字。它几乎总是指仅有的指向本地计算机。这意味着它通常不能用于指代远程服务器(即不在同一台计算机上的服务器)。请注意,这也适用于虚拟机。localhost
可以进行修改hosts
,但浏览器可能会忽略它,而浏览器只会返回ex. 127.0.0.1
无法远程访问的本地环回地址()。如果使用 Linux(例如 Raspberry Pi 或 WSL),除了编辑文件之外,可能还需要采取一些有关解析器配置的其他步骤
hosts
。对于基本测试,您可能希望继续使用 IP 地址并避免使用任何类型的主机名,以便将连接问题限制为联系服务器本身,而不是特定的主机名。
如果您想使用主机名而不修改
hosts
每个设备,您将需要设置本地 DNS 服务器(并相应地配置您的路由器)。对于您希望使用的任何主机名访问该服务器,您都应该拥有
hosts
指向该服务器的条目或 DNS 条目。
阿帕奇
确保 Apache 正在远程服务器上运行。
虽然它不会阻止 Apache 响应,但如果 Apache 没有给定主机名的虚拟主机,它可能会返回默认网页或错误页面。
Apache 服务器或其虚拟主机的配置可能会拒绝您从另一台计算机进行访问,因此请仔细检查是否存在限制访问您服务器的指令。任何
Require
指令的设置都是一个不错的起点(这些指令的值通常应为all granted
)。ServerRoot
您的和DocumentRoot
设置(以及任何DocumentRoot
目录设置)中的不一致或错误以及给定虚拟主机中的httpd.conf
任何/目录设置都可能导致响应。DocumentRoot
403 Forbidden
使用
.htaccess
文件可以根据文件中的设置限制对服务器的访问。确保所有
listen
指令(例如 inhttpd.conf
)都设置为listen 80
and/or之类的内容listen 443
,而不是例如listen 127.0.0.1:80
orlisten 127.0.0.1:443
。第二种指令将 Apache 限制为只监听127.0.0.1
/localhost
,它将丢弃来自任何非服务器本身的计算机的请求。如果您已将 Apache 设置到
listen
80 或端口 443(HTTP/HTTPS 默认端口)以外的端口,则需要将该端口包含在 IP 或主机名中(例如192.168.1.nn:8080
或local-example:80
)。对 Apache 进行任何更改都需要重新启动 Apache 才能使更改生效。
在 Linux 上,使用基于 Debian/Ubuntu 的系统,您可能需要在重新启动之前从
sites-available
文件夹中的任何文件创建到您的sites-enabled
文件夹的符号链接以使它们可用。