同じネットワーク上の別のコンピューターからこのローカルホストに接続するにはどうすればよいですか?


172

私は現在プロジェクトに取り組んでおり、片方のラップトップがもう片方のローカルホストに接続する自宅の2つのラップトップでテストしたいと思います。XAMPPを使用しています。どうすればよいですか?

回答:


284

それは間違いなく可能です。ここでは、Apacheの一般的なケースを取り上げます。

Symfony2の大ファンで、symfonyのウェブサイトにhttp://symfony.local/4台のコンピューター(ウェブサイトをホストしているメインのコンピューター、およびMac、Windows、およびLinuxディストリビューション(ワイヤレスまたは非接続)に接続)からアクセスしたいとします。メインコンピュータ。

一般的なスケッチ:

ここに画像の説明を入力してください


1 仮想ホストを設定します

まず、Apache httpd-vhosts.confファイルで仮想ホストを設定する必要があります。でXAMP、あなたはここで、このファイルを見つけることができますC:\xampp\apache\conf\extra\httpd-vhosts.conf。でMAMP、あなたはここで、このファイルを見つけることができますApplications/MAMP/conf/apache/extra/httpd-vhosts.confこの手順では、symfony.local要求を処理するためにコンピューター上のWebサーバーを準備します。仮想ホストの名前と、Webサイトのルート/メインフォルダーを指定する必要があります。これを行うには、そのファイルの最後に次の行を追加します。DocumentRootメインフォルダがある場所にを変更する必要があります。ここで私は/Applications/MAMP/htdocs/Symfony/私のウェブサイトのルートとして採用しました。

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

2 hostsファイルを設定します

クライアント(その場合はブラウザー)がsymfony.local実際の意味を理解するには、コンピューター上のhostsファイルを編集する必要があります。ブラウザにURLを入力するたびに、コンピュータはそれが何を意味するかを理解しようとします!symfony.localコンピュータにとって何も意味しません。そのため、名前symfony.localをIPアドレスに解決しようとします。まず、コンピューター上のホストファイルを調べて、IPアドレスをアドレスバーに入力したものと一致させることができるかどうかを確認します。できない場合は、DNSサーバーに問い合わせます。ここでの秘訣は、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

Hosts file

##
# 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 symfony.local他のコンピューターからのアクセス

最後に、主な質問に到達します。

他のコンピューターから自分のWebサイトにアクセスするにはどうすればよいですか?

これは簡単です。他のコンピュータにどのようにして見つけられるかを伝えるだけですsymfony.local!これどうやってやるの?

3a ウェブサイトをホストしているコンピューターのIPアドレスを取得します

まず、Webサイトをホストしているコンピューター(最初から取り組んでいるコンピューター)のIPアドレスを知る必要があります。端末では、MACおよびLINUXタイプifconfig |grep inetで、WINDOWSタイプでipconfig。このコンピュータのIPアドレスが192.168.1.5であると仮定します。

3b Webサイトにアクセスしようとしているコンピューター上のhostsファイルを編集します。

繰り返しますが、MACでは、このファイルはにあり/private/etc/hostsます。上のLINUX、中 /etc/hosts。とWINDOWS\Windows\system32\private\etc\hostsWINDOWS 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すると、さまざまなコンピューターでWebサイトを美しく表示できます。OSXユーザーであれば、Virtual Boxを介してInternet ExplorerでWebサイトをテストする場合(Windowsコンピューターを使用したくない場合)も、同じ戦略を適用できることに注意してください。これは、OSX上のWindows / IEテスト環境の作成で美しく説明されています。


モバイルデバイスからローカルホストにアクセスすることもできます

モバイルデバイスからローカルホストのWebサイトにアクセスする方法について疑問に思うかもしれません。場合によっては、お使いのデバイスのホストファイル(iPhone、iPad ...)を変更できないことがあります(脱獄は除外されます)。

次に、解決策は、Webサイトをホストしているマシンにプロキシサーバーをインストールし、iPhoneからそのプロキシに接続することです。これは実際には次の投稿で非常によく説明されており、設定するのにそれほど長くはありません。

Macでは、次のことをお勧めしますモバイルデバイスのローカルホスト名を使用してMac OS X Webサイトをテストする:プロキシとしてSquidManを使用します。100%無料のソリューションです。Charlesをプロキシサーバーとして使用できる人もいますが、50ドルです。

Linuxでは、Squidをプロキシサーバーとして使用することで、上記のMac OSの方法を採用できます。

Windowsでは、Fiddlerを使用してそれを行うことができます。解決策は次の投稿で説明されています:FiddlerによるiPhoneトラフィックの監視


2017年11月23日編集:Hostsファイルを変更したくない

@Dre。ホストファイルを手動で編集しないことにより、別のコンピューターからWebサイトにアクセスする方法はありますか?Webサイトにアクセスしたい100台のコンピューターがあるとします。

これは興味深い質問です。OPの質問に関連しているので、手伝ってください。

すべてのマシンがWebサイトがホストされている場所を認識できるように、ネットワークを変更する必要があります。ほとんどの日常的なルーターはこれを行わないため、ネットワーク上で独自のDNSサーバーを実行する必要があります。

ルーター(192.168.1.1)があるとしましょう。このルーターにはDHCPサーバーがあり、ネットワーク上の100台のマシンにIPアドレスを割り当てます。

ここで、同じように、同じネットワーク上に、192.168.1.5Webサイトがあるマシンがあるとします。そのマシンを呼び出しますpompei

$ echo $HOSTNAME
pompei

以前と同じように、そのマシンpompei192.168.1.5はWebサイトにサービスを提供するHTTPサーバーが実行されますsymfony.local

すべてのマシンsymfony.localがホストされpompeiていることを知るにsymfony.localは、ホストされている場所を知っているネットワーク上のカスタムDNSサーバーが必要になります。ネットワーク上のデバイスは、pompei内部で提供されているドメイン名を解決できます。

3つの簡単なステップ。

Step 1: DNS Server

ネットワークにDNSサーバーを設定します。pompei便宜上オンにして、dnsmasqのようなものを使用してみましょう。

Dnsmasqは、ドメインネームシステム(DNS)フォワーダーなどを提供します

pompeiDNSmasqを実行して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-resolvgoogleサーバーを使用しています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サーバーからの回答を受け取ったとして、その後、適切お送りしますHTTPリクエストをするpompei192.168.1.5

これで遊んで楽しんでもらいます。これらの2つのステップが主要なガイドラインであるため、これが初めての場合はデバッグして数時間を費やす必要があります。これはもう少し高度なネットワークであり、プライマリDNSサーバー、セカンダリDNSサーバーなどがあるとしましょう。幸運を!


いい返事。「Fiddlerを使用したiPhoneトラフィックの監視」に到達するまで、最後の部分を実行しました。Fiddlerホームページを指します。:これは、リンクする必要がありますconceptdev.blogspot.com/2009/01/...
helpse

ホストファイルを変更しましたが、問題はIISサーバーも実行しているため、「localhost」または「127.0.0.1」がIISサーバーを指しているため、xampサーバーに置き換えるにはどうすればよいですか?
Uzair Ali 2015

1
@ host手動でファイルを編集せずに別のコンピューターからWebサイトにアクセスするための可能な方法はありますか?100台のコンピュータがWebサイトにアクセスしたいとします
Drenyl

1
@Dreはい、すべてのマシンがWebサイトがホストされている場所を認識できるように、ネットワークを変更する必要があります。回答の最後に情報を追加しました。お役に立てば幸いです。
Mick

1
素晴らしい説明!
シェパード

25

同じワイヤレスでインターネット全体の両方のラップトップでテストするには、http://localhost.run/https://ngrok.com/のようなサービスを使用できます


3
localhost.runは魅力のように機能しました。私のサーバーはポート8000で実行されていると、ちょうど80から8000にコマンドラインを変更しました
Isuru

3
うわー!かっこいい...本当に1回でうまくいきました...ありがとう@tommyvn
Jabongg

ローカルホストファイルを更新するよりもNGROKを設定する方が簡単です。+1
BlackHatSamurai

簡単なテストのための簡単なソリューション
shamila

15

両方のマシンが同じワークグループに属しcmd.exeている場合は、接続するマシンで開きipconfigIPv4 Address行にIPを入力してメモします。

次に、接続するマシンでを使用しますhttp:// + the IP of the target machine

それでうまくいくはずです。


3
これは、ポート80がアプリのポート(通常はそうです)であれば機能しますが、別のポートを使用することもできることに注意してください。つまり、http:// +ターゲットマシンのIP + ":PORT_NUMBER"
ggderas

これは私が探していたシンプルなソリューションでした。@Codrin Eugeniu:ggderasによって言及されているように、提案に ":PORT_NUMBER"を回答に組み込むことを検討してください。私にとっては、Apache Supersetを使用してポート8088経由で接続したため、これが必要でした。
Ohumeronen

8

Mac OS Xの場合:

  1. ターミナルで実行ifconfig | grep 192.して、現在のネットワーク上のマシンの内部IPを取得します。のようなものかもしれません192.168.1.140

  2. サーバーを起動します。たとえば、node server.jsあるポートでサーバーを起動する場合があります。

  3. スマートフォンで、にアクセスする192.168.1.140:3000か、サーバーが実行されているポートにアクセスします。


6

私のマシンには管理者権限がなく、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/


localhost:3000でWebアプリケーションを実行します。browser-sync start --proxy localhost:3000別のシェルで使用しました。ネットワークに接続されている別のデバイスで、次のように入力します${computerIP}:3000。何も表示されません。もう少し提供すべきことがあると思います。
ベン・カープ

5

ファイアウォールが原因で、ローカルホストのウェブサーバーにアクセスできない可能性があります。
必要に応じて、コンピュータのインターネットセキュリティウイルス対策ネットワークセキュリティの両方のIPアドレスを安全なIPアドレスとして設定します。
Windows PCのIPアドレスを見つける方法:スタート>(実行)次のように入力します:cmd(Enter)
(これによりブラックボックスのコマンドプロンプトが開きます)
ipconfigを入力します(Enter)
ApacheまたはIIS WebサーバーがPCにインストールされているとしましょう:192.168.0.3
で、ラップトップでWebサーバーにアクセスしたいとします。(ラップトップのIPは192.168.0.5です)
PCで、FirefoxまたはInternet Eplorerブラウザー内にhttp:// localhost /と入力して、Webサーバー上のデータにアクセスします。
ラップトップでhttp://192.168.0.3/と入力して、PC上のWebサーバーにアクセスします。

これらすべてを機能させるには、ウェブサーバーを正しくインストールする必要があります(IIS、Apache、XAMP、WAMPなど)。

それが機能しない場合は、ラップトップからPCにpingしてみてください。ラップトップで
コマンドpropmtを開きます。スタート> cmd(Enter)
ping 192.168.1.3(Enter)
pingが失敗した場合、ファイアウォールが接続またはネットワークをブロックしていますケーブルが不良です。モデムまたはネットワークスイッチとマシンを再起動します。
ポートを使用しているチャットプログラムなどのプログラムを閉じます。
別のポート番号を試すこともできます:http:192.168.0.3:80またはhttp:192.168.0.3:81または最後に任意の乱数


1
tou @KarlosFontanaに感謝します-あなたも私の質問に答えました。デスクトップに書き込んだサーバーにiPhoneを接続するときに問題が発生しました。iPhoneが私のPCのWiFiに接続されました。あなたの最後の行が私の質問に答えました:-)
Tommy

4

上記の手順を実行した後も、別のデバイスから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  

0

Windowsを使用している場合は、ipconfigを使用してローカルIPv4アドレスを取得し、Apache構成ファイルhttpd.confで次のように指定します。

Listen: 10.20.30.40:80

Apacheサーバーを再起動し、ネットワーク上の他のコンピューターからテストします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.