ServerNameとServerAliasはどのように機能しますか?


62

仮想ホスト構成の次の部分で、さらに明確にする必要があります。

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin example@example.com
  ServerName  141.29.495.999
  ServerAlias example.com
...

これは、現在の構成に似た構成例です(現時点ではドメイン名を持っていません)。

<VirtualHost *:80>-ポート80でこのサーバーに接続できるIPに対して行われたすべてのHTTP要求に対して、次の設定を許可します。たとえば、サーバーに複数のIPでアクセスできる場合、このディレクティブを両方ではなく1つに制限できます。

ServerName-HTTPリクエストのホスト部分がこの名前と一致する場合、リクエストを許可します。通常、これはIPにマップされるドメイン名ですが、この場合、HTTP要求ホストはこのIPと一致する必要があります。

ServerAlias -サーバーが受け入れる代替名。

私にとって紛らわしい部分は、上記のシナリオで、にServerAlias mytestname.comHTTPリクエストを設定しmytestname.comてから、これを機能させるにはサーバーのIPを指すDNSレコードが必要ですか?どの場合、ServerAliasは基本的にEXTRA ServerNameエントリですか?

私はそのDNSエントリは、持っていたと言うfoobar.com = 141.29.495.999が、その後、私が持っていたServerName = 141.29.495.999ServerAliasしてfoob​​ar.comを受け入れるためには言及がないため、空だった、それは、foobar.comが右IPに解決されることを意味するだろうServerNameかはServerAlias

か何か。私は混乱しています。


1
最後から2番目の段落のいくつかの単語を忘れました。:-)
ThatGraemeGuy

回答:


105

次のように考えてください:

DNSは電話帳/イエローページです。誰かがあなたの電話に電話したいとき、彼らはあなたの名前を調べ、あなたの電話番号を取得し、その電話をかけることができます。DNSは同じことをしますが、コンピューターの場合-誰かが行きたい場合www.example.com、DNSにIPアドレスを要求し、そのIPアドレスを持つコンピューターに連絡できます。それが解決の意味です。IPアドレスの解決は、Apacheとはまったく関係ありません。厳密にはDNSの質問です。

ServerNameそしてServerAliasより多くの企業の社内電話帳のようなものです。Webサーバーがスイッチボードです。サーバーへのすべての着信接続を受け入れます。次に、クライアント/呼び出し元は、探している名前を伝え、その名前を処理する方法についてApache構成を調べます。

名前がapache構成でServerName / ServerAliasとしてリストされていない場合、apacheは常にリストの最初のVirtualHostを提供します。または、VirtualHostがまったくない場合、リクエストでどのホスト名が与えられても同じコンテンツを提供します。

ETA:それで、通常の接続のためのステップバイステップ:

  1. http://www.example.comブラウザに入力します。
  2. お使いのコンピューターは、DNSリゾルバーに、話したいときに使用するIPアドレスを尋ねますwww.example.com
  3. コンピューターはそのIPアドレスに接続し、通信したいと言いますwww.example.comHost:HTTP のヘッダーです)。
  4. Webサーバーはその構成を見て、からのコンテンツの要求をどう処理するかを判断しますwww.example.com。次のいずれかが発生する可能性があります。
    • www.example.comServerNameまたはとしてリストされている場合ServerAliasは、VirtualHostそのVirtualHostの構成を使用してコンテンツを配信します。
    • サーバーにはVirtualHostsがまったくありません。ある場合、httpd.confの構成を使用してコンテンツを配信します。
    • サーバーにはVirtualHostsがwww.example.comありますが、いずれにもリストされていません-リストにある場合、リスト内の最初のVirtualhostがコンテンツの配信に使用されます。

したがって、HTTP要求のホスト部分がの場合www.example.com、DNSはその名前のIPアドレスを解決し、HTTP要求のホスト部分は実際にはIPになります。サーバーに到達すると、Apacheはリクエストが要求したことを認識し、そのドメイン名のor ディレクティブwww.example.comがある場合、ドキュメントルートを提供できますか?ServerNameServerAlias
njp

いいえ-HTTPリクエスト部分は依然としてホスト名です。もう少し明確にします。
ジェニーDは、モニカを復活させる

The server has VirtualHosts but www.example.com isn't listed in any of them - if so, the first Virtualhost in the list will be used to deliver the content.。これをテストしました。正しいのですが、最初のVirtualhostかどうかはわかりません。情報をありがとうございました。+1
SMMousavi

19

ServerNameを定義しない場合、apache2は/ etc / hostsから推測しようとします。ServerAliasはオプションです。最も一般的なユースケースは

ServerName example.com
ServerAlias www.example.com

ドメインの登録やDNSレコードの設定など、リクエストがWebサーバーIPに到達することを確認するのは(apache2の仕事ではなく)あなた次第です。ドメインおよびDNSレコードなしでこれを行う非常に一般的な方法(テストおよび開発用)は、example.comがサーバーのIPを指すようにローカルマシンの/ etc / hostsファイルを設定することです。

192.168.0.12 example.com
192.168.0.12 www.example.com

0

トピックに関する公式ドキュメントを読むことを強くお勧めします:https : //httpd.apache.org/docs/2.4/vhosts/name-based.html

それは言う、「一致するからServerNameかServerAliasが最も具体的な一致するIPアドレスとポートの組み合わせを含む仮想ホストのセットに見つからない場合は、そのと一致した後、最初にリストされた仮想ホストが使用されます。」。そのため、「foobar.com」にアクセスすると、IP 141.29.495.999に何らかの形で一致する最初のVirtualHostエントリがhttpdによって使用されます。

同じドキュメントには、「多くのサーバーが複数の名前でアクセスできるようにしたい。これはServerAliasディレクティブで可能です」と書かれています。したがって、ServerAliasは単に追加のServerNameエントリと見なすことができます。

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