特定のドメインにサービスを提供するサーバー機能のテスト


11

Server Aお気に入りのwebserver-daemonを使用して設定したとしますwww.example.com。次に、これをに移動しServer Bます。大量のコピーと構成を行った後、新しいサーバーは準備ができているようです。最後のテストは順番に行われます。DNSレコードを変更する前www.example.comに、DNSレコードがまだサーバーAを指しているときに、サーバーBにどのように要求しますか。


私の主な質問に答えましたが、/ etc / hostsが私の影響下にない場合、代わりに生のHTTP1.1をWebサーバーに伝えることでtelnetでテストすることは可能ですか?


8
完全に新しい質問をするために質問を編集しないでください。既存の回答を(多少)無効にする傾向があり、プラットフォームは質問が変更されたという通知も送信しないため、すでに質問に関与している人々が回答を再訪することはほとんどありません。フォローアップの質問があることを彼らに直接コメントすることができます。多くの場合、代わりに新しい質問(以前のQ&Aを指している可能性があります)を行うことをお勧めします。
HBruijn

2
編集でゴールポストを完全にシフトするためだけに、ダウン投票を検討します。> _ <
ウェスリー

回答:


12

DNSは魔法のようなものです。クライアントPCの上に十分なコントロールを使用すると、作ることができるright.comwrong.comしてviceversa.io。テストクライアントPCにジャンプして、そのクライアントのホストファイルを変更することでDNS解決をマックします。または、もう少し複雑なことをして、そのホストにクエリする単純なDNSサーバーを与えることができますdnsmasq。どちらの方法でも、最終的な目標はwww.example.com、サーバーBのIPアドレスでの応答に関するクエリのDNS応答を作成することです。HTTPホストヘッダーには、www.example.comのDNS名が付けられますが、サーバーB

マジック!


3
どういうわけか/etc/hosts私には起こらなかったし、これは完全に機能した。リマインダーに乾杯!
ジャームンド

2
このhostsファイルはDNS解決には関与しませんが、クライアントOSによって提供されるリゾルバーライブラリがDNSでのルックアップに加えて使用できる、完全に独立した名前ルックアップメカニズムです。個人的には、「それは魔法」のビットが「理解する必要はありません」につながると思いますが、これは確かに専門家にとって悪いことです。
ホーカンLindqvist

@HåkanLindqvistあなたはフレーズの文脈と使い方をひどく誤解しています。
ウェズリー

いずれにしても、hostsファイルDNSです。これはSFです。ここにいる人は、どこかで違いを知ることを期待しています。
イルマリカロネン

@IlmariKaronenそして、hostsファイルがDNSであるとは言わなかったので、ServerFaultに対する期待は満たされ、私たちはここですべて順調です!ᕕ(ᐛ)ᕗ
ウェズリー・

11

HTTPに対してこのようなテストを実行するために重要なことは、実際にはDNSとはまったく関係がなく、HTTPクライアントがHostヘッダー値として送信するものであることに注意することが重要です。

クライアントは正しいIPアドレスとポートに接続する必要があることは明らかですが、それを超えるとHost、HTTPリクエスト自体にインラインであるヘッダーに到達します。


クイックテストでは、クライアントのオペレーティングシステムレベルの設定を変更せずに次のコマンドを使用できます。

$ curl -H "Host: www.example.com" http://192.0.2.17/foo/bar

または、その問題については、

$ curl -H "Host: www.example.com" http://beta.example.com/foo/bar


通常のWebブラウザーで同じことを行うには、要求ヘッダーを変更できるブラウザー拡張機能(またはヘッダーを変更するHTTPプロキシ)が必要です。または、クライアントマシンのオペレーティングシステムの構成を変更する必要があります。

前述のように、このような構成変更を行う最も簡単な方法は、hostsファイルにエントリを追加することです。この方法では、hostsファイルを参照するときにクライアントOSリゾルバーライブラリが既にヒットし、DNSルックアップを行う必要さえありません。

他のオプションには、クライアントで構成されたDNSリゾルバーサーバーを、必要に応じて応答するように設定されたネームサーバーに変更することが含まれます。


1
名前解決を
いじる

2
Recentをcurl使用すると、通常の名前解決(DNS またはホストファイル)をオーバーライドしても、ヘッダーを自動的に実行でき、httpSを使用/テストする場合はSNIも実行できます。--resolveマンページまたはcurl.haxx.se/docs/manpage.htmlを参照してください。
dave_thompson_085

4

これはでテストできtelnetます。コマンドを入力して、生のHTTP要求を作成する必要があります。間違いを犯すことはできません。また、一部のサーバーにはタイムアウトがあるため、その時間枠内にリクエスト全体を入力する必要があります。

コマンドは次のようになります。

telnet serverb 80

リクエストは次のようになります。

GET / HTTP/1.1
Host: www.example.com

空白行で終わる必要があるため、ホストヘッダーの後にEnterキーを2回押すことに注意してください。


1
Nitpick:HTTPヘッダーでは大文字と小文字が区別されることは想定されていませんが、規範的なHostヘッダーはすべて大文字ではありません。(そして明らかに、いくつかのサーバーは異なる大文字の使用に問題があるかもしれません。)
ボブ

@Bob true、編集
briantist

3

私が通常やるのは、www.example.comを/ etc / hostsのサーバーBのIPアドレスに強制することです。私はMosaicを使用してからそれを行ってきましたが、あまり使用しないので、改善する必要性を感じていませんでした。

あなたのために少し周りを見ると、私が見つけた/superuser/403042/custom-host-file-for-firefoxによって回答されhttps://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard /ですが、放棄されたという非常に最近のメモがあります。


/ etc / hostsなしのテスト方法を要求する編集への応答、はい、存在します。これは、非常に基本的なテスト用のtelnet、上記の回答で述べたようなアドオン、またはカスタム構成のプロキシ、または(これが私が好む方法である)サーバーB上のwww2.exampleのServerAliasのいずれかです。 com。
法律

3

動作するかどうかを確認する必要がある場合はModify Headers、Firefoxのような単純なブラウザプラグインを使用して、をに変更しHOSTてくださいwww.mydomain.com

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