小编典典

如何从同一网络上的另一台计算机连接到此 localhost?

all

我目前正在做一个项目,我想在家中的两台笔记本电脑上对其进行测试,其中一台笔记本电脑连接到另一台的本地主机。我正在使用 XAMPP。我该怎么做呢?


阅读 71

收藏
2022-07-04

共1个答案

小编典典

这绝对是可能的。我们将在此处以 Apache 为例。

假设您是 Symfony2 的忠实粉丝,并且您想http://symfony.local/从 4 台不同的计算机访问您的 symfony
网站(主计算机托管您的网站,以及 Mac、Windows 和 Linux 发行版连接(无线或非无线)到主计算机。

一般草图:

在此处输入图像描述


1 设置虚拟主机

httpd-vhosts.conf您首先需要在您的 apache文件中设置一个虚拟主机。在 XAMP 上
,您可以在此处找到此文件:C:\xampp\apache\conf\extra\httpd-vhosts.conf. 在 MAMP
上,您可以在此处找到此文件:Applications/MAMP/conf/apache/extra/httpd-vhosts.conf.
此步骤准备您计算机上的 Web
服务器以处理symfony.local请求。您需要提供虚拟主机的名称以及您网站的根/主文件夹。为此,请在该文件的末尾添加以下行。您需要将
更改DocumentRoot为您的主文件夹所在的位置。在这里,我已将/Applications/MAMP/htdocs/Symfony/其作为我网站的根。

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 配置您的主机文件

为了让客户端(在这种情况下是您的浏览器)了解symfony.local真正的含义,您需要编辑计算机上的 hosts 文件。每次您在浏览器中键入 URL
时,您的计算机都会尝试理解它的含义!symfony.local对电脑没有任何意义。因此它会尝试将名称解析为symfony.localIP
地址。它将首先查看您计算机上的主机文件,以查看他是否可以将 IP 地址与您在地址栏中键入的内容相匹配。如果不能,那么它会询问 DNS 服务器
。这里的技巧是将以下内容附加到您的主机文件中。

  • MAC 上,此文件位于/private/etc/hosts;
  • LINUX 上,此文件位于 /etc/hosts;
  • WINDOWS 上,此文件位于\Windows\system32\private\etc\hosts;
  • WINDOWS 7 上,此文件位于\Windows\system32\drivers\etc\hosts;
  • WINDOWS 10 上,此文件位于\Windows\system32\drivers\etc\hosts;

Hosts file

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local

从现在开始,每次你在这台电脑上输入 symfony.local,你的电脑都会使用 loopback 接口连接到 symfony.local。它将了解您想要在
localhost (127.0.0.1) 上工作。

3 symfony.local 从其他计算机访问

我们终于到达了您的主要问题,即:

我现在如何通过其他计算机访问我的网站?

好吧,这很容易!我们只需要告诉其他计算机他们是如何找到的symfony.local!我们如何做到这一点?

3a 获取托管网站的计算机的 IP 地址

我们首先需要知道托管网站的计算机上的 IP 地址(我们从一开始就一直在研究的那个)。在终端中,在 MACLINUX
类型ifconfig |grep inet上,在WINDOWS类型上ipconfig。假设这台计算机的 IP 地址是
192.168.1.5

3b 在您尝试访问网站的计算机上编辑主机文件。

同样,在 MAC 上,此文件位于/private/etc/hosts; 在 LINUX 上,在
/etc/hosts;并在 WINDOWS\Windows\system32\private\etc\hosts(如果您使用的是
WINDOWS 7 ,则此文件位于\Windows\system32\drivers\etc\hosts)..
现在的诀窍是使用我们尝试访问/与之交谈的计算机的 IP 地址:

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local

4 最后在浏览器中享受结果

您现在可以进入浏览器并键入http://symfony.local以在不同的计算机上精美地查看您的网站!请注意,如果您是 OSX 用户,通过
Virtual Box 在 Internet Explorer 上测试您的网站(如果您不想使用 Windows 计算机),您可以应用相同的策略。这在在
OSX 上制作您的 Windows/IE 测试环境
中得到了很好的解释。


您还可以从移动设备访问您的本地主机

您可能想知道如何从移动设备访问您的本地主机网站。在某些情况下,您将无法修改设备上的主机文件(iPhone、iPad…)(不包括越狱)。

那么,解决方案是在托管网站的机器上安装代理服务器,并从您的 iphone 连接到该代理。它实际上在以下帖子中得到了很好的解释,并且设置时间不长:

在 Mac 上,我建议:在移动设备上使用本地主机名测试 Mac OS X 网站:使用SquidMan作为代理。这是一个 100%
免费的解决方案。有些人也可以使用Charles作为代理服务器,但价格为 50 美元。

在 Linux 上,您可以通过使用Squid作为代理服务器来适应上述 Mac OS 方式。

在 Windows 上,您可以使用Fiddler来做到这一点。该解决方案在以下帖子中进行了描述:使用
Fiddler 监控 iPhone 流量


编辑 23/11/2017:嘿,我不想修改我的 Hosts 文件

@Dre。通过不手动编辑主机文件从另一台计算机访问网站的任何可能方式?假设我有 100 台计算机想要访问该网站

这是一个有趣的问题,因为它与 OP 问题有关,让我帮忙。

您必须对网络进行更改,以便每台机器都知道您的网站托管在哪里。大多数日常路由器都不会这样做,因此您必须在网络上运行自己的
DNS 服务器

假设您有一个路由器 (192.168.1.1)。该路由器有一个 DHCP 服务器,并为网络上的 100 台机器分配 IP 地址。

现在,假设您与上述相同,在同一网络上拥有一台机器,192.168.1.5其中有您的网站。我们将调用那台机器[pompei](https://en.wikipedia.org/wiki/Pompei)

$ echo $HOSTNAME
pompei

和以前一样,那台机器pompei运行192.168.1.5一个为您的网站提供服务的 HTTP 服务器symfony.local

为了让每台机器知道symfony.local托管在哪里,pompei我们现在需要网络上的一个自定义 DNS
服务器,它知道symfony.local托管在哪里。然后,网络上的设备将能够解析内部提供的域名pompei

3个简单的步骤。

Step 1: DNS Server

在您的网络上设置 DNS
服务器。pompei为了方便起见,让我们打开它并使用类似dnsmasq的东西。

Dnsmasq 提供 域名系统 (DNS) 转发 器,…。

我们想pompei运行 DNSmasq 来处理 DNS 请求Hey, pompei, where is symfony.local和响应Hey, sure think, it is on 192.168.1.5 but don't take my word for it

继续安装 dnsmasq,dnsmasq 配置文件通常/etc/dnsmasq.conf取决于您的环境。

我个人使用no-resolv和谷歌服务器server=8.8.8.8 server=8.8.8.4

注意: 如果修改 /etc/hosts 文件,请务必重新启动 DNSmasq,否则任何更改都不会生效。

Step 2: Firewall

要工作,pompei需要允许传入和传出“域”数据包,这些数据包从端口 53 进出。当然!这些是 DNS
数据包,如果pompei不允许它们,则根本无法访问您的 DNS 服务器。继续并打开该端口 53。在 linux
上,您通常会使用iptables它。

分享我的想法,但您很可能必须深入了解防火墙并很好地理解所有内容。

#
# Allow outbound DNS port 53
#
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 iptables -A INPUT -p udp --dport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

Step 3: Router

告诉您的路由器您的 dns 服务器192.168.1.5现在已打开。大多数情况下,您只需登录路由器并非常轻松地手动更改它。

就是这样,当你在一台机器上请求时symfony.local,它会询问你的 DNS 服务器
托管在哪里symfony.local,一旦它收到来自 DNS 服务器的回答,就会向on发送正确的 HTTP 请求
pompei``192.168.1.5

我让你玩这个,享受旅程。这两个步骤是主要指导方针,因此如果这是您第一次这样做,您将不得不调试并花费几个小时。假设这是一个更高级的网络,有主 DNS
服务器,辅助 DNS 服务器。。祝你好运!

2022-07-04