IPアドレスで共有サーバー上のWebサイトにアクセスする方法は?


18

私はいくつかの質問があります、助けてください:

最初に、http://74.125.224.211これはnslookupによって返されるIPアドレスであるため、入力するだけでGoogle検索にアクセスできます。

ただし、www.yahoo.comから返されたIPアドレスではできませんでした。IPでYahoo検索ページにアクセスするにはどうすればよいですか?

別の例でhttp://www.allaboutcircuits.com68.233.243.63、DNSサーバーによって解決されますが、に移動するとhttp://68.233.243.63、「Hello world!」が表示されます。

第二に、何らかの理由で、私のWebホスティングサービスのDNSリゾルバーに何か問題があります(修正されません!!)。だからコマンドのような

get_file_contents("http://www.allaboutcircuits.com");

戻ります php_network_getaddresses: getaddrinfo failed: Name or service not known

IPアドレスでこれを回避するにはどうすればよいですか、

68.233.243.63

つまり、何らかの形でHTTPホスト名パラメーターをget_file_contents()

これを自分の側(コード内)で解決したいのですが、サーバー管理者によるトラブルシューティング/調整は行われません。


9
記事を読む仮想サーバーとどのように単一のホストは、多くのウェブサイトをホストすることができます。
ウォリック

ドメイン名を使用できない理由があると思いますか?
アイザックラビノビッチ

@Isaac Rabinovitch:user1502776は、「WebホスティングサービスのDNSリゾルバーに問題がある(修正されない!!)」と言い、「これを自分の側で(コードで)解決したい、トラブルシューティングなし/調整はサーバー管理者が行います。」
Bavi_H

3
あなたのサーバー管理者がその愚かであるなら、あなたは別のウェブホスティングプロバイダーを見つける必要があります。
マイケルハンプトン

回答:



10

wallykが言ったように、それは仮想サーバーです

この例をApacheに取ります

<VirtualHost *:80>
ServerName example2.com
DocumentRoot C:/www/example2.com
</VirtualHost>

<VirtualHost *:80>
ServerName example.com
DocumentRoot C:/www/example.com
</VirtualHost>

c:\ www \ example.comで、「Hello World!example.com」というインデックスファイルを作成します。

c:\ www \ example2.comで、「Hellow World!example2.com」というインデックスファイルを作成します。

そして、hostsファイルを

127.0.0.1 example.com
127.0.0.1 example2.com

次に、http://example.com に移動してから、http://example2.comに移動します

これが、単一のIPごとに複数のサイトを持つ方法です。

基本的に答えは、IPからそのサイトを取得することはできないということです。


IPだけでは十分ではないという点がわかります。しかし、リモートWebページを取得するために提供するIPとホスト名を使用するPHPコマンドはありますか?このコマンドはDNSを照会しないでください。
user1502776

4
これは技術的には正確かもしれませんが、質問には対応していません。問題は、PHPスクリプトを使用して、DNSを介してIPアドレスを自動的に解決せずに、既知のIPを持つサーバーから既知のホスト名を持つ特定のサイトを要求する方法を尋ねることです。特定のIPに対応するホスト名を見つける方法を尋ねているわけではありません。wallykのコメントはHost、サーバーがホストするWebサイトを区別し、正しいWebサイトを提供するためにサーバーに必要なヘッダーに関する情報が含まれているため、より関連性があります。
ボブ

5

制御外のDNSサーバーに依存する代わりに、ホスト名とIPアドレスの両方を手動で指定したいとします。コメントを見てみるのfile_get_contentsドキュメントヘッダー:、私はそこにコメンターが必要なホストが含まれているコンテキストを作成することにより、同様の問題を解決した参照してください。このようなもの:

$context = stream_context_create(array('http' => array('header' => 'Host: www.allaboutcircuits.com')));
$data = file_get_contents('http://68.233.243.63/', 0, $context);

もちろん、ホスト名とIPアドレスの両方を手動で指定することの不利な点は、将来IPアドレスが変更された場合(たとえば、サイトが新しいホスティングプロバイダーに移動した場合)、コードが動作しなくなることですIPアドレスを手動で更新します。


2

IPアドレスだけでは、複数の仮想ホストが同じポート/サーバーで実行されているときに、どのサイトに移動したいかを一意に識別するのに十分ではありません。その場合、サーバー名を識別するHTTPリクエストにHostヘッダーを指定する必要があります。telnetを介してポート80に直接これを行うことができます。

$ telnet 68.233.243.63 80
Trying 68.233.243.63...
Connected to 68.233.243.63.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.allaboutcircuits.com

telnetコマンドとGETおよびHost行を入力し、サーバーから返されたHTMLソースコードを取得します。

または、(-Hフラグ付きで)ヘッダーを具体的に追加する場所でcurlを使用できます。

curl 68.233.243.63 -H "Host: www.allaboutcircuits.com"

1

第二に、何らかの理由で、私のWebホスティングサービスのDNSリゾルバーに何か問題があります(修正されません!!)

Webホストではない場合、クライアント側で別のDNSサーバーを使用できます。8.8.8.8と8.8.8.6はGoogleによって実行され、4.4.4.2は一般的なスタンバイです。Namebenchを使用すると、最速のものを見つけることができます。あるいは、何らかのプロキシサービスを使用することもできます(VPSで独自に実行するか、Torを使用しますが、他のオプションがあります)。

これはPHPなので、さらに簡単なオプションは、別のシステムでコードを実行することです。クラッジはメンテナンスできません。


彼はいくつかの共有ホスト上にあり、DNSを変更できないように聞こえるので、彼は「自分の側で(コード内で)これを解決したいのですが、サーバー管理者はトラブルシューティング/調整を行いません。 」彼がDNSを変更できるとは思わない。。。
アーニー

1
彼はテストするためにクライアント側の代替DNSサーバーを使用できます。Webホストが仮想ホストを適切に設定していない場合、別のWebホストが必要です。
ジャーニーマンオタク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.