首页 文章

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

提问于
浏览
138

我正在研究一个项目,我想在家里的两台笔记本电脑上测试一下,其中一台笔记本电脑连接到本地主机 . 我正在使用XAMPP . 我该怎么做呢?

8 回答

  • 6

    如果在执行上述步骤后仍无法从其他设备访问localhost,则这是一个旁注 . 这可能是由于apache ports.conf已经配置为本地服务(127.0.0.1)而不是外部服务 .

    检查以下内容,(对于ubuntu apache2)

    $ cat /etc/apache2/ports.conf
    

    如果设置如下,

    NameVirtualHost *:80  
    Listen 127.0.0.1:80
    

    然后将其更改回默认值

    NameVirtualHost *:80  
    Listen 80
    
  • 9

    可能是您的防火墙阻止您访问localhost的Web服务器 .
    如果需要,将两台计算机的Internet安全防病毒网络安全的IP地址作为安全IP地址 .
    如何查找Windows PC的IP地址:开始>(运行)输入:cmd(回车)
    (这会打开黑匣子命令提示符)
    输入ipconfig(回车)
    假设您的PC上安装了Apache或IIS Web服务器:192.168.0.3
    并且您想要使用笔记本电脑访问您的网络服务器 . (笔记本电脑的IP为192.168.0.5)
    在您的PC上,您可以在Firefox或Internet Eplorer浏览器中输入:http:// localhost /访问您的网络服务器上的数据 .
    在笔记本电脑上输入http://192.168.0.3/以访问PC上的网络服务器 .

    要使所有这些工作正常,您需要正确安装Web服务器(例如IIS,Apache,XAMP,WAMP等) .

    如果它不起作用,请尝试从笔记本电脑ping您的电脑:
    在笔记本电脑上打开命令propmt:开始> cmd(回车)
    ping 192.168.1.3(回车)
    如果ping失败,则防火墙会阻止您的连接,或者您的网络布线有问题 . 重启调制解调器或网络交换机和您的计算机 .
    关闭正在使用您的端口的聊天程序等程序 .
    您还可以尝试不同的端口号:http:192.168.0.3:80或http:192.168.0.3:81或最后的任意随机数

  • 248

    这绝对是可能的 . 我们将在这里介绍Apache的一般情况 .

    让's say you'成为一个很大的Symfony2粉丝,你想从4台不同的计算机(托管你网站的主计算机,以及连接(无线或非无线)的Mac,Windows和Linux发行版)访问你的symfony网站 http://symfony.local/ 主电脑 .

    一般草图:

    enter image description here


    1 Set up a virtual host

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

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

    2 Configure your hosts file

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

    • 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 ;

    主机文件

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

    从现在开始,每次在此计算机上键入symfony.local时,您的计算机都将使用环回接口连接到symfony.local . 它将理解您想要在localhost(127.0.0.1)上工作 .

    3 Access symfony.local from an other computer

    我们终于到达了你的主要问题:

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

    那么现在这很容易!我们只需要告诉其他计算机他们如何找到 symfony.local !我们如何做到这一点?

    3a Get the IP address of the computer hosting the website

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

    3b Edit the hosts file on the computer you are trying to access the website from.

    同样,在 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 Finally enjoy the results in your browser

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


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

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

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

    在Mac上,我建议:Testing a Mac OS X web site using a local hostname on a mobile device:使用SquidMan作为代理 . 这是一个100%免费的解决方案 . 有些人也可以使用Charles作为代理服务器,但它是50美元 .

    在Linux上,您可以使用Squid作为代理服务器来调整上面的Mac OS .

    在Windows上,您可以使用Fiddler执行此操作 . 解决方案在以下帖子中描述:Monitoring iPhone traffic with Fiddler


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

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

    这是一个有趣的问题,因为它与OP问题有关,请允许我帮忙 .

    您必须对网络进行更改,以便每台计算机都知道您的网站所在的位置 . Most everyday routers don't do that所以你必须在网络上运行自己的 DNS Server .

    我们假装你有一台路由器(192.168.1.1) . 此路由器具有DHCP服务器,并为网络上的100台计算机分配IP地址 .

    现在,假设您拥有与上述相同的网络,一台机器位于 192.168.1.5 ,拥有您的网站 . 我们称这台机器为庞培 .

    $ echo $HOSTNAME
    pompei
    

    和以前一样, 192.168.1.5 的机器庞培运行 HTTP Server ,为您的网站 symfony.local 提供服务 .

    对于每台知道 symfony.local 托管在庞培的机器,我们现在需要一个知道 symfony.local 托管位置的网络上的自定义DNS服务器 . 然后,网络上的设备将能够在内部解析pompei提供的域名 .

    3简单的步骤 .

    第1步:DNS服务器

    在网络上设置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,否则更改将不会生效 .

    第2步:防火墙

    为了工作,庞贝需要允许传入和传出'domain'数据包,这些数据包将从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
    

    第3步:路由器

    告诉您的路由器您的DNS服务器现在在 192.168.1.5 . 大多数情况下,您只需登录路由器并手动更改即可 .

    就是这样,当你在一台机器上并要求 symfony.local 时,它会询问你的 DNS Server 在哪里 symfony.local ,并且一旦从DNS服务器收到答案,它就会在 192.168.1.5 上发送正确的 HTTP request 到pompei .

    我让你玩这个,享受骑行 . 这两个步骤是主要指导原则,因此如果您是第一次这样做,则必须进行调试并花费几个小时 . 让我们说这是一个更高级的网络,有主DNS服务器,辅助DNS服务器,etc. . 祝好运!

  • 6

    要在同一无线和互联网上的两台笔记本电脑上进行测试,您可以使用http://localhost.run/https://ngrok.com/等服务

  • 5

    如果两台计算机位于同一工作组中,请在要连接的计算机上打开 cmd.exe ,键入 ipconfig 并记下 IPv4 Address 行的IP .

    然后,在要连接的计算机上,使用 http:// + the IP of the target machine .

    应该这样做 .

  • 4

    这个工具为我节省了很多,因为我的机器上没有管理员权限,并且已经安装了nodejs . 由于某种原因,我网络上的配置不允许我访问仅将IP指向浏览器的其他计算机 .

    # Using a local.dev vhost
    $ browser-sync start --proxy
    
    # Using a local.dev vhost with PORT
    $ browser-sync start --proxy local.dev:8001
    
    # Using a localhost address
    $ browser-sync start --proxy localhost:8001
    
    # Using a localhost address in a sub-dir
    $ browser-sync start --proxy localhost:8080/site1
    

    http://www.browsersync.io/docs/command-line/

  • 0

    在Mac OS X上:

    • 在终端中,运行 ifconfig | grep 192. 以在其当前网络上获取机器的内部IP . 它可能像 192.168.1.140

    • 启动服务器 . 例如, node server.js 可能会在某个端口上启动服务器 .

    • 在手机上,访问 192.168.1.140:3000 或运行服务器的任何端口 .

  • 13

    如果您在Windows上,请使用 ipconfig 获取本地IPv4地址,然后在Apache配置文件下指定: httpd.conf ,如:

    Listen: 10.20.30.40:80
    

    重新启动Apache服务器并从网络上的其他计算机进行测试 .

相关问题