comparison xml/ja/docs/http/server_names.xml @ 490:9913f1d51c07

Replaced "nginx" domain names with example domains.
author Ruslan Ermilov <ru@nginx.com>
date Thu, 19 Apr 2012 12:30:24 +0000
parents 6135f3c95bf6
children 130fad6dc1b4
comparison
equal deleted inserted replaced
489:2abd1998a0cc 490:9913f1d51c07
12 サーバ名は <literal>server_name</literal> ディレクティブを使用して定義され、リクエストに対してどのサーバブロックが使われるかを決定します。「<link doc="request_processing.xml" />」もお読みください。これらは完全一致名、ワイルドカード名、正規表現で定義されます: 12 サーバ名は <literal>server_name</literal> ディレクティブを使用して定義され、リクエストに対してどのサーバブロックが使われるかを決定します。「<link doc="request_processing.xml" />」もお読みください。これらは完全一致名、ワイルドカード名、正規表現で定義されます:
13 13
14 <programlisting> 14 <programlisting>
15 server { 15 server {
16 listen 80; 16 listen 80;
17 server_name nginx.org www.nginx.org; 17 server_name example.org www.example.org;
18 ... 18 ...
19 } 19 }
20 20
21 server { 21 server {
22 listen 80; 22 listen 80;
23 server_name *.nginx.org; 23 server_name *.example.org;
24 ... 24 ...
25 } 25 }
26 26
27 server { 27 server {
28 listen 80; 28 listen 80;
30 ... 30 ...
31 } 31 }
32 32
33 server { 33 server {
34 listen 80; 34 listen 80;
35 server_name ~^(?&lt;user&gt;.+)\.nginx\.net$; 35 server_name ~^(?&lt;user&gt;.+)\.example\.net$;
36 ... 36 ...
37 } 37 }
38 </programlisting> 38 </programlisting>
39 39
40 サーバ名は次の順序で考査されます: 40 サーバ名は次の順序で考査されます:
44 <listitem> 44 <listitem>
45 完全一致名 45 完全一致名
46 </listitem> 46 </listitem>
47 47
48 <listitem> 48 <listitem>
49 アスタリスクで始まるワイルドカード名: <url>*.nginx.org</url> 49 アスタリスクで始まるワイルドカード名: <url>*.example.org</url>
50 </listitem> 50 </listitem>
51 51
52 <listitem> 52 <listitem>
53 アスタリスクで終わるワイルドカード名: <url>mail.*</url> 53 アスタリスクで終わるワイルドカード名: <url>mail.*</url>
54 </listitem> 54 </listitem>
66 66
67 <section id="wildcard_names" 67 <section id="wildcard_names"
68 name="ワイルドカード名"> 68 name="ワイルドカード名">
69 69
70 <para> 70 <para>
71 ワイルドカード名にはそのサーバ名の最初か最後のみ、そしてドットに隣接したところのみにアスタリスクが含まれます。サーバ名 <literal>www.*.nginx.org</literal> や <literal>w*.nginx.org</literal> は無効です。しかし、これらのサーバ名は正規表現を使用して、例えば <literal>~^www\..+\.nginx\.org$</literal> や <literal>~^w.*\.nginx\.org$</literal> として指定することができます。アスタリスクは複数部分にマッチさせることができます。<literal>*.nginx.org</literal> は <url>www.nginx.org</url> だけでなく <url>www.sub.nginx.org</url> にもマッチします。 71 ワイルドカード名にはそのサーバ名の最初か最後のみ、そしてドットに隣接したところのみにアスタリスクが含まれます。サーバ名 <literal>www.*.example.org</literal> や <literal>w*.example.org</literal> は無効です。しかし、これらのサーバ名は正規表現を使用して、例えば <literal>~^www\..+\.example\.org$</literal> や <literal>~^w.*\.example\.org$</literal> として指定することができます。アスタリスクは複数部分にマッチさせることができます。<literal>*.example.org</literal> は <url>www.example.org</url> だけでなく <url>www.sub.example.org</url> にもマッチします。
72 </para> 72 </para>
73 73
74 <para> 74 <para>
75 特別なワイルドカードの形式 <literal>.nginx.org</literal> は、完全一致名 <literal>nginx.org</literal> とワイルドカード名 <literal>*.nginx.org</literal> の両方にマッチさせるように利用できます。 75 特別なワイルドカードの形式 <literal>.example.org</literal> は、完全一致名 <literal>example.org</literal> とワイルドカード名 <literal>*.example.org</literal> の両方にマッチさせるように利用できます。
76 </para> 76 </para>
77 77
78 </section> 78 </section>
79 79
80 80
83 83
84 <para> 84 <para>
85 nginx で使用される正規表現は Perl プログラミング言語(PCRE)で使用されているものと互換性があります。正規表現を使用するには、サーバ名を必ずチルダで始めます: 85 nginx で使用される正規表現は Perl プログラミング言語(PCRE)で使用されているものと互換性があります。正規表現を使用するには、サーバ名を必ずチルダで始めます:
86 86
87 <programlisting> 87 <programlisting>
88 server_name ~^www\d+\.nginx\.net$; 88 server_name ~^www\d+\.example\.net$;
89 </programlisting> 89 </programlisting>
90 90
91 チルダで始まっていないと完全一致名として、またはその正規表現にアスタリスクが含まれている場合はワイルドカード名として(そしてたいていの場合は無効なものとして)扱われてしまいます。&ldquo;^&rdquo; と &ldquo;$&rdquo; アンカーをセットし忘れないようにしてください。これらは構文的には必須ではありませんが論理的に必須です。また、ドメイン名のドットはバックスラッシュで必ずエスケープしてください。&ldquo;{&rdquo; と &ldquo;}&rdquo; 文字を含む正規表現は必ずダブルクォーテーションで囲ってください: 91 チルダで始まっていないと完全一致名として、またはその正規表現にアスタリスクが含まれている場合はワイルドカード名として(そしてたいていの場合は無効なものとして)扱われてしまいます。&ldquo;^&rdquo; と &ldquo;$&rdquo; アンカーをセットし忘れないようにしてください。これらは構文的には必須ではありませんが論理的に必須です。また、ドメイン名のドットはバックスラッシュで必ずエスケープしてください。&ldquo;{&rdquo; と &ldquo;}&rdquo; 文字を含む正規表現は必ずダブルクォーテーションで囲ってください:
92 92
93 <programlisting> 93 <programlisting>
94 server_name "~^(?&lt;name&gt;\w\d<b>{</b>1,3<b>}</b>+)\.nginx\.net$"; 94 server_name "~^(?&lt;name&gt;\w\d<b>{</b>1,3<b>}</b>+)\.example\.net$";
95 </programlisting> 95 </programlisting>
96 96
97 さもないと、nginx は起動に失敗し次のエラーメッセージを表示します: 97 さもないと、nginx は起動に失敗し次のエラーメッセージを表示します:
98 98
99 <programlisting> 99 <programlisting>
165 デフォルトではないサーバブロックで &ldquo;Host&rdquo; ヘッダ無しのリクエストを処理させたい場合は、空のサーバ名を指定します: 165 デフォルトではないサーバブロックで &ldquo;Host&rdquo; ヘッダ無しのリクエストを処理させたい場合は、空のサーバ名を指定します:
166 166
167 <programlisting> 167 <programlisting>
168 server { 168 server {
169 listen 80; 169 listen 80;
170 server_name nginx.org www.nginx.org ""; 170 server_name example.org www.example.org "";
171 ... 171 ...
172 } 172 }
173 </programlisting> 173 </programlisting>
174 </para> 174 </para>
175 175
186 サーバ名ではなく IP アドレスを使用したリクエストが送られてきた場合、そのリクエストの &ldquo;Host&rdquo; ヘッダには IP アドレスが含まれているので、その IP アドレスをサーバ名として利用してそのリクエストを処理できます: 186 サーバ名ではなく IP アドレスを使用したリクエストが送られてきた場合、そのリクエストの &ldquo;Host&rdquo; ヘッダには IP アドレスが含まれているので、その IP アドレスをサーバ名として利用してそのリクエストを処理できます:
187 187
188 <programlisting> 188 <programlisting>
189 server { 189 server {
190 listen 80; 190 listen 80;
191 server_name nginx.org 191 server_name example.org
192 www.nginx.org 192 www.example.org
193 "" 193 ""
194 <b>192.168.1.1</b> 194 <b>192.168.1.1</b>
195 ; 195 ;
196 ... 196 ...
197 } 197 }
218 218
219 <programlisting> 219 <programlisting>
220 server { 220 server {
221 listen 80; 221 listen 80;
222 listen 8080 default_server; 222 listen 8080 default_server;
223 server_name nginx.net; 223 server_name example.net;
224 ... 224 ...
225 } 225 }
226 226
227 server { 227 server {
228 listen 80 default_server; 228 listen 80 default_server;
229 listen 8080; 229 listen 8080;
230 server_name nginx.org; 230 server_name example.org;
231 ... 231 ...
232 } 232 }
233 </programlisting> 233 </programlisting>
234 </para> 234 </para>
235 235
239 239
240 <section id="optimization" 240 <section id="optimization"
241 name="最適化"> 241 name="最適化">
242 242
243 <para> 243 <para>
244 完全一致名とワイルドカード名はハッシュで保存されます。このハッシュは待ち受けポートに結び付けられ、各待ち受けポートは、完全一致名のハッシュ、アスタリスクで始まるワイルドカード名のハッシュ、アスタリスクで終わるワイルドカード名のハッシュの3つまでのハッシュを持つことができます。ハッシュのサイズは構成フェーズで最適化されるので、CPU キャッシュのミスは最低でもサーバ名を見つけることができます。最初に完全一致名のハッシュが検索されます。完全一致名のハッシュを使って見つからなければ、次にアスタリスクで始まるワイルドカード名のハッシュが検索されます。さらにまだ見つからなければ、アスタリスクで終わるワイルドカード名のハッシュが検索されます。ワイルドカード名のハッシュの検索は完全一致名のハッシュの検索よりも遅くなります。これはサーバ名の検索がドメイン部分によって検索されるからです。特別なワイルドカード形式の <literal>.nginx.org</literal> は完全一致名のハッシュではなくワイルドカード名のハッシュで保存されます。正規表現は順番に考査されるので、これがもっとも遅い方式ですし、非スケーラブルでもあります。 244 完全一致名とワイルドカード名はハッシュで保存されます。このハッシュは待ち受けポートに結び付けられ、各待ち受けポートは、完全一致名のハッシュ、アスタリスクで始まるワイルドカード名のハッシュ、アスタリスクで終わるワイルドカード名のハッシュの3つまでのハッシュを持つことができます。ハッシュのサイズは構成フェーズで最適化されるので、CPU キャッシュのミスは最低でもサーバ名を見つけることができます。最初に完全一致名のハッシュが検索されます。完全一致名のハッシュを使って見つからなければ、次にアスタリスクで始まるワイルドカード名のハッシュが検索されます。さらにまだ見つからなければ、アスタリスクで終わるワイルドカード名のハッシュが検索されます。ワイルドカード名のハッシュの検索は完全一致名のハッシュの検索よりも遅くなります。これはサーバ名の検索がドメイン部分によって検索されるからです。特別なワイルドカード形式の <literal>.example.org</literal> は完全一致名のハッシュではなくワイルドカード名のハッシュで保存されます。正規表現は順番に考査されるので、これがもっとも遅い方式ですし、非スケーラブルでもあります。
245 </para> 245 </para>
246 246
247 <para> 247 <para>
248 これらの理由から、可能な場合は完全一致名を利用するのがよいでしょう。例えば、もっとも頻繁にリクエストされるサーバ名が <url>nginx.org</url> と <url>www.nginx.org</url> だとすると、これらを明示的に定義するとより効率的です: 248 これらの理由から、可能な場合は完全一致名を利用するのがよいでしょう。例えば、もっとも頻繁にリクエストされるサーバ名が <url>example.org</url> と <url>www.example.org</url> だとすると、これらを明示的に定義するとより効率的です:
249 249
250 <programlisting> 250 <programlisting>
251 server { 251 server {
252 listen 80; 252 listen 80;
253 server_name nginx.org www.nginx.org *.nginx.org; 253 server_name example.org www.example.org *.example.org;
254 ... 254 ...
255 } 255 }
256 </programlisting> 256 </programlisting>
257 257
258 上記は次の単純化された形式を使用するよりも効率的です: 258 上記は次の単純化された形式を使用するよりも効率的です:
259 259
260 <programlisting> 260 <programlisting>
261 server { 261 server {
262 listen 80; 262 listen 80;
263 server_name .nginx.org; 263 server_name .example.org;
264 ... 264 ...
265 } 265 }
266 </programlisting> 266 </programlisting>
267 </para> 267 </para>
268 268
269 <para> 269 <para>
270 たくさんの数のサーバ名を定義したり非常に長いサーバ名を定義したりする場合は、http レベルの <literal>server_names_hash_max_size</literal> と <literal>server_names_hash_bucket_size</literal> ディレクティブを調整する必要があるかもしれません。<literal>server_names_hash_bucket_size</literal> のデフォルト値は 32、もしくは 64、あるいはお使いの CPU キャッシュラインのサイズによってはその他の値になっているかもしれません。もしデフォルト値が 32 でサーバ名として &ldquo;too.long.server.name.nginx.org&rdquo; のような非常に長いサーバ名を定義している場合、nginx は起動に失敗し、次のエラーメッセージを表示させます: 270 たくさんの数のサーバ名を定義したり非常に長いサーバ名を定義したりする場合は、http レベルの <literal>server_names_hash_max_size</literal> と <literal>server_names_hash_bucket_size</literal> ディレクティブを調整する必要があるかもしれません。<literal>server_names_hash_bucket_size</literal> のデフォルト値は 32、もしくは 64、あるいはお使いの CPU キャッシュラインのサイズによってはその他の値になっているかもしれません。もしデフォルト値が 32 でサーバ名として &ldquo;too.long.server.name.example.org&rdquo; のような非常に長いサーバ名を定義している場合、nginx は起動に失敗し、次のエラーメッセージを表示させます:
271 271
272 <programlisting> 272 <programlisting>
273 could not build the server_names_hash, 273 could not build the server_names_hash,
274 you should increase server_names_hash_bucket_size: 32 274 you should increase server_names_hash_bucket_size: 32
275 </programlisting> 275 </programlisting>
329 <listitem> 329 <listitem>
330 正規表現サーバ名のサポートは 0.6.7 からです。 330 正規表現サーバ名のサポートは 0.6.7 からです。
331 </listitem> 331 </listitem>
332 332
333 <listitem> 333 <listitem>
334 ワイルドカードの形式 <url>nginx.*</url> のサポートは 0.6.0 からです。 334 ワイルドカードの形式 <url>example.*</url> のサポートは 0.6.0 からです。
335 </listitem> 335 </listitem>
336 336
337 <listitem> 337 <listitem>
338 特別な形式 <url>.nginx.org</url> のサポートは 0.3.18 からです。 338 特別な形式 <url>.example.org</url> のサポートは 0.3.18 からです。
339 </listitem> 339 </listitem>
340 340
341 <listitem> 341 <listitem>
342 ワイルドカードの形式 <url>*.nginx.org</url> のサポートは 0.1.13 からです。 342 ワイルドカードの形式 <url>*.example.org</url> のサポートは 0.1.13 からです。
343 </listitem> 343 </listitem>
344 344
345 </list> 345 </list>
346 </para> 346 </para>
347 347