Mercurial > hg > nginx-site
comparison xml/he/docs/http/server_names.xml @ 0:61e04fc01027
Initial import of the nginx.org website.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Thu, 11 Aug 2011 12:19:13 +0000 |
parents | |
children | 9d544687d02c |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:61e04fc01027 |
---|---|
1 <!DOCTYPE digest SYSTEM "../../../../dtd/article.dtd"> | |
2 | |
3 <article title="שמות שרת" | |
4 link="/he/docs/http/server_names.html" | |
5 lang="he" | |
6 author="Igor Sysoev" | |
7 translator="מבזקים.נט"> | |
8 | |
9 <section> | |
10 | |
11 <para> | |
12 שמות שרת מוגדרים על ידי המאפיין <dirname>server_name</dirname> | |
13 והם קובעים איזה בלוק תצורת שרת מקובץ התצורה יהיה בשימוש לכל בקשה ובקשה לשרת. | |
14 ראו גם “<a href="/en/docs/http/request_processing.xml" />”. | |
15 ניתן להגדירם באמצעות שמות מדוייקים, שמות Wildcard, או באמצעות ביטויים רגולריים: | |
16 | |
17 <programlisting> | |
18 server { | |
19 listen 80; | |
20 server_name nginx.org www.nginx.org; | |
21 ... | |
22 } | |
23 | |
24 server { | |
25 listen 80; | |
26 server_name *.nginx.org; | |
27 ... | |
28 } | |
29 | |
30 server { | |
31 listen 80; | |
32 server_name mail.*; | |
33 ... | |
34 } | |
35 | |
36 server { | |
37 listen 80; | |
38 server_name ~^(?<user>.+)\.nginx\.net$; | |
39 ... | |
40 } | |
41 </programlisting> | |
42 | |
43 השמות נבדקים בסדר הבא: | |
44 | |
45 <orderedlist> | |
46 | |
47 <item> | |
48 שמות מדוייקים; | |
49 </item> | |
50 | |
51 <item> | |
52 שמות Wildcard המתחילים בכוכבית: <url>*.nginx.org</url>; | |
53 </item> | |
54 | |
55 <item> | |
56 שמות Wildcard המסתיימים בכוכבית: <url>mail.*</url>; | |
57 </item> | |
58 | |
59 <item> | |
60 ביטויים רגולריים לפי הסדר שבו הם מופיעים בקובץ התצורה. | |
61 </item> | |
62 | |
63 </orderedlist> | |
64 ההתאמה הראשונה עוצרת את החיפוש. | |
65 </para> | |
66 | |
67 </section> | |
68 | |
69 | |
70 <section name="wildcard_names" | |
71 title="שמות Wildcard"> | |
72 | |
73 <para> | |
74 שם wildcard יכול להכיל כוכבית רק בתחילת או בסוף השם, וחייב להיות בגבול של נקודה. | |
75 השמות <dirname>www.*.nginx.org</dirname> | |
76 ו <dirname>w*.nginx.org</dirname> הם שגויים. | |
77 למרות זאת, ניתן לציין שמות כאלה באמצעות ביטויים רגולריים, | |
78 לדוגמא, <dirname>~^www\..+\.nginx\.org$</dirname> ו | |
79 <dirname>~^w.*\.nginx\.org$</dirname>. | |
80 סימן הכוכבית יכול להחליף מספר חלקי שם. | |
81 השם <dirname>*.nginx.org</dirname> מתאים לא רק ל | |
82 <url>www.nginx.org</url> אלא גם ל <url>www.sub.nginx.org</url>. | |
83 </para> | |
84 | |
85 <para> | |
86 ניתן להשתמש ב wildcard מיוחד בצורה של <dirname>.nginx.org</dirname> | |
87 כדי להתאים גם לשם המדוייק <dirname>nginx.org</dirname> | |
88 וגם לשם ה wildcard הבא: <dirname>*.nginx.org</dirname>. | |
89 </para> | |
90 | |
91 </section> | |
92 | |
93 | |
94 <section name="regex_names" | |
95 title="שמות ביטויים רגולריים"> | |
96 | |
97 <para> | |
98 הביטויים הרגולריים ש nginx משתמש בהם, תואמים לאלה אשר נמצאים בשימוש | |
99 בשפת פרל (PCRE). | |
100 כדי להשתמש בביטוי רגולרי, על שם השרת להתחיל עם סימן הטילדה (~), כך: | |
101 | |
102 <programlisting> | |
103 server_name ~^www\d+\.nginx\.net$; | |
104 </programlisting> | |
105 | |
106 אחרת nginx יתייחס אליו כשם מדוייק, או אם הביטוי מכיל כוכבית, כשם wildcard (וסביר | |
107 להניח שיהיה שגוי). | |
108 אל תשכחו להגדיר עוגני | |
109 “^” ו “$”. | |
110 הם לא דרושים תחבירית, אם כי לוגית. | |
111 כמו כן שימו לב שהנקודות של שם המתלם צריכות להיות מוברחות (escaped) על ידי לוכסן הפוך (\). | |
112 ביטוי רגולרי המכיל את התווים “{” | |
113 ו “}” צריך להיות במרכאות: | |
114 | |
115 <programlisting> | |
116 server_name "~^(?<name>\w\d<b>{</b>1,3<b>}</b>+)\.nginx\.net$"; | |
117 </programlisting> | |
118 | |
119 אחרת nginx יכשל בעלייה, ויציג את הודעת השגיאה הבאה: | |
120 | |
121 <programlisting> | |
122 directive "server_name" is not terminated by ";" in ... | |
123 </programlisting> | |
124 | |
125 ביטוי רגולרי שניתן לו שם ונלכד, ניתן לשימוש מאוחר יותר כמשתנה: | |
126 | |
127 <programlisting> | |
128 server { | |
129 server_name ~^(www\.)?(<b>?<domain></b>.+)$; | |
130 | |
131 location / { | |
132 root /sites/<b>$domain</b>; | |
133 } | |
134 } | |
135 </programlisting> | |
136 | |
137 ספריית PCRE תומכת בלכידות מבוססות שם לפי התחביר הבא: | |
138 | |
139 <table note="yes"> | |
140 | |
141 <tr> | |
142 <td><code>?<<i>name</i>></code></td> | |
143 <td>תחביר תואם פרל 5.10, נתמך החל מ PCRE-7.0</td> | |
144 </tr> | |
145 | |
146 <tr> | |
147 <td><code>?'<i>name</i>'</code></td> | |
148 <td>תחביר תואם פרל 5.10, נתמך החל מ PCRE-7.0</td> | |
149 </tr> | |
150 | |
151 <tr> | |
152 <td><code>?P<<i>name</i>></code></td> | |
153 <td>תחביר תואם פייתון, נתמך החל מ PCRE-4.0</td> | |
154 </tr> | |
155 | |
156 </table> | |
157 | |
158 אם nginx נכשל בעלייה ומציג את הודעת השגיאה הבאה: | |
159 | |
160 <programlisting> | |
161 pcre_compile() failed: unrecognized character after (?< in ... | |
162 </programlisting> | |
163 | |
164 פירוש הדבר שספריית ה PCRE היא ישנה, ועליכם לנסות את התחביר | |
165 <dirname>?P<<i>name</i>></dirname>. | |
166 | |
167 את הלכידה ניתן לבצע גם בצורה ספרתית: | |
168 | |
169 <programlisting> | |
170 server { | |
171 server_name ~^(www\.)?(.+)$; | |
172 | |
173 location / { | |
174 root /sites/<b>$2</b>; | |
175 } | |
176 } | |
177 </programlisting> | |
178 | |
179 אך יש להשתמש בצורה זו במקרים פשוטים (כמו לעיל), כיוון שהייחוסים הספרתיים | |
180 יכולים להידרס בקלות | |
181 </para> | |
182 | |
183 | |
184 </section> | |
185 | |
186 | |
187 <section name="miscellaneous_names" | |
188 title="שמות כלליים"> | |
189 | |
190 <para> | |
191 אם אף <dirname>server_name</dirname> לא מוגדר בבלוג שרת, | |
192 אזי nginx משתמש ב <i>hostname</i> בתור שם השרת. | |
193 </para> | |
194 | |
195 <para> | |
196 אם ברצונכם לעבד בקשות בלי שורת כותר “Host” | |
197 בבלוק שרת שאינו ברירת המחדל, עליכם לציין שם ריק: | |
198 | |
199 <programlisting> | |
200 server { | |
201 listen 80; | |
202 server_name nginx.org www.nginx.org ""; | |
203 ... | |
204 } | |
205 </programlisting> | |
206 </para> | |
207 | |
208 <para> | |
209 אם מישהו מבצע בקשה באמצעות כתובת IP במקום שם שרת, שורת הכותר | |
210 “Host” תכיל כתובת IP, ואפשר יהיה לטפל בבקשה על ידי | |
211 שימוש בכתובת IP בשם השרת: | |
212 | |
213 <programlisting> | |
214 server { | |
215 listen 80; | |
216 server_name nginx.org | |
217 www.nginx.org | |
218 "" | |
219 <b>192.168.1.1</b> | |
220 ; | |
221 ... | |
222 } | |
223 </programlisting> | |
224 </para> | |
225 | |
226 <para> | |
227 בדוגמאות catch-all ייתכן ותראו את השם המוזר “_”: | |
228 | |
229 <programlisting> | |
230 server { | |
231 listen 80 default_server; | |
232 server_name _; | |
233 return 444; | |
234 } | |
235 </programlisting> | |
236 | |
237 אין שום דבר מוזר בשם הזה, הוא רק אחד משלל שמות מתחם שגויים שלעולם לא | |
238 תפגשו בהם בשם אמיתי. | |
239 ניתן להשתמש גם ב “--”, “!@#”, וכך הלאה. | |
240 </para> | |
241 | |
242 <para> | |
243 nginx בגירסאות עד 0.6.25 תמך בשם המיוחד “*” | |
244 אשר יש שפירשו אותו בטעות כשם catch-all. | |
245 השם הזה מעולם לא תפקד כ catch-all ואף לא כשם wildcard. | |
246 בפועל, הוא סיפק את הפונקציונליות שהיום מסופקת על ידי | |
247 המאפיין <dirname>server_name_in_redirect</dirname>. | |
248 השם המיוחד “*” הוא כעת לא מומלץ לשימוש, ויש | |
249 להשתמש במאפיין <dirname>server_name_in_redirect</dirname> במקומו. | |
250 שימו לב שאין דרך לציין את שם ה catch-all או את שרת <i>ברירת המחדל</i> | |
251 על ידי שימוש במאפיין <dirname>server_name</dirname>. | |
252 זוהי תכונה של המאפיין <dirname>listen</dirname> ולא של המאפיין <dirname>server_name</dirname>. | |
253 ראו גם “<a href="/en/docs/http/request_processing.xml" />”. | |
254 | |
255 באפשרותכם להגדיר שרתים המאזינים על פורטים <url>*:80</url> ו <url>*:8080</url>, | |
256 ולהגדיר שרת אחת שהוא ברירת המחדל עבור פורט | |
257 <url>*:8080</url>, בעוד שהשני יהיה ברירת מחדל עבור פורט <url>*:80</url>: | |
258 | |
259 <programlisting> | |
260 server { | |
261 listen 80; | |
262 listen 8080 default_server; | |
263 server_name nginx.net; | |
264 ... | |
265 } | |
266 | |
267 server { | |
268 listen 80 default_server; | |
269 listen 8080; | |
270 server_name nginx.org; | |
271 ... | |
272 } | |
273 </programlisting> | |
274 </para> | |
275 | |
276 | |
277 </section> | |
278 | |
279 | |
280 <section name="optimization" | |
281 title="ייעול"> | |
282 | |
283 <para> | |
284 | |
285 שמות מדוייקים ושמות wildcard מאוחסנים בגיבוב (hash). | |
286 הגיבובים מקושרים להאזנות לפורטים, ולכן פורט האזנה יכולים להיות | |
287 עד שלושה גיבויים: גיבוב שם מדוייק, גיבוי שמות wildcard שמתחילים | |
288 בכוכבית, וגיבוב שמות wildcard שמסתיימים בכוכבית. | |
289 הגודל של הגיבובים מיועל בשלב התצורה כך שניתן יהיה למצוא שם | |
290 עם הכי מעט פספוסי מטמון מעבד. | |
291 גיבוב השמות המדוייקים עובר חיפוש ראשון. | |
292 אם שם לא נמצא בגיבוב השמות המדוייק, מתחיל חיפוש בגיבוב השמות המתחילים | |
293 בכוכבית. | |
294 אם הוא לא נמצא גם שם, מתחיל חיפוש בגיבוב השמות המסתיימים בכוכבית. | |
295 חיפוש בגיבובי שמות wildcard הוא איטי יותר מחיפוש שם בגיבוב השמות המדוייקים | |
296 כיוון ששמות עוברים חיפוש על פי חלקי שם המתחם. | |
297 שימו לב שצורת ה wildcard המיוחדת <dirname>.nginx.org</dirname> | |
298 שמורה גם היא בגיבוב שמות ה wildcard ולא בגיבוב השמות המדוייקים. | |
299 ביטויים רגולריים נבדקים באופן סדרתי, ועל כן הם השיטה האיטית ביותר | |
300 ואינם סקאלאביליים. | |
301 </para> | |
302 | |
303 <para> | |
304 בהתחשב בנסיבות אלה, הכי טוב להשתמש בשמות מדוייקים בכל מקום שהדבר אפשרי. | |
305 לדוגמה, אם השמות הנפוצים ביותר לשרת הם <url>nginx.org</url> ו <url>www.nginx.org</url>, | |
306 יותר יעיל להגדיר אותם באופן מפורש: | |
307 | |
308 <programlisting> | |
309 server { | |
310 listen 80; | |
311 server_name nginx.org www.nginx.org *.nginx.org; | |
312 ... | |
313 } | |
314 </programlisting> | |
315 | |
316 מאשר להשתמש בשיטה המופשטת: | |
317 | |
318 <programlisting> | |
319 server { | |
320 listen 80; | |
321 server_name .nginx.org; | |
322 ... | |
323 } | |
324 </programlisting> | |
325 </para> | |
326 | |
327 <para> | |
328 אם הגדרתם מספר גדול של שמות שרת, או שהגדרתם שמות שרת ארוכים מהרגיל, | |
329 ייתכן ויהיה עליכם לכוונן את המאפיינים <dirname>server_names_hash_max_size</dirname> | |
330 ו <dirname>server_names_hash_bucket_size</dirname> ברמת ה <i>http</i>. | |
331 ערך ברירת המחדל של <dirname>server_names_hash_bucket_size</dirname> | |
332 יכול להיות שווה ל 32, ל 64, או לערך אחר, בהתאם לגודל קו המטמון של המעבד שלכם. | |
333 אם ברירת המחדל היא 32 ותגדירו | |
334 “too.long.server.name.nginx.org” בתור שם שרת, | |
335 אזי nginx ייכשל בעלייה ויציג את הודעת השגיאה הבאה: | |
336 | |
337 <programlisting> | |
338 could not build the server_names_hash, | |
339 you should increase server_names_hash_bucket_size: 32 | |
340 </programlisting> | |
341 | |
342 במקרה זה, עליכם להגדיר את ערך המאפיין לחזקה הבאה של 2: | |
343 | |
344 <programlisting> | |
345 http { | |
346 server_names_hash_bucket_size 64; | |
347 ... | |
348 </programlisting> | |
349 | |
350 אם הגדרתם כמות גדולה של שמות שרת, אתם עלולים לקבל את הודעת השגיאה הבאה: | |
351 | |
352 <programlisting> | |
353 could not build the server_names_hash, | |
354 you should increase either server_names_hash_max_size: 512 | |
355 or server_names_hash_bucket_size: 32 | |
356 </programlisting> | |
357 | |
358 עליכם לנסות קודם להגדיל את <dirname>server_names_hash_max_size</dirname> | |
359 למספר קרוב למספר השרתים. | |
360 רק אם זה לא עזר, או שזמן העלייה של nginx הוא ארוך בצורה מוגזמת, | |
361 נסו להגדיל את <dirname>server_names_hash_bucket_size</dirname>. | |
362 </para> | |
363 | |
364 <para> | |
365 אם שרת הוא השרת היחיד עבור פורט האזנה, אזי nginx לא יבדוק שמות שרת בכלל | |
366 (ולא יבנה גיבובים עבור פורט ההאזנה). | |
367 אך, יש יוצא דופן אחד. | |
368 אם <dirname>server_name</dirname> הוא ביטוי רגולרי עם לכידות, | |
369 nginx חייב לבצע את הביטוי כדי לקבל את מה שנלכד בהן. | |
370 </para> | |
371 | |
372 </section> | |
373 | |
374 | |
375 <section name="compatibility" | |
376 title="תאימות"> | |
377 | |
378 <para> | |
379 <list> | |
380 | |
381 <item> | |
382 לכידת שמות בביטויים רגולריים נתמכה החל מגירסה 0.8.25. | |
383 </item> | |
384 | |
385 <item> | |
386 לכידת ביטויים רגולריים נתמכה החל מגירסה 0.7.40. | |
387 | |
388 </item> | |
389 | |
390 <item> | |
391 שם שרת ריק “” נתמך החל מגירסה 0.7.12. | |
392 </item> | |
393 | |
394 <item> | |
395 שם שרת מסוג wildcard או ביטוי רגולרי נתמכו לשימוש כשם שרת ראשון החל מגירסה 0.6.25. | |
396 </item> | |
397 | |
398 <item> | |
399 שמות שרת כביטוי רגולרי נתמכו החל מגירסה 0.6.7. | |
400 </item> | |
401 | |
402 <item> | |
403 צורות Wildcard מסוג <url>nginx.*</url> נתמכו החל מגירסה 0.6.0. | |
404 </item> | |
405 | |
406 <item> | |
407 הצורה המיוחדת <url>.nginx.org</url> נתמכה החל מגירסה 0.3.18. | |
408 </item> | |
409 | |
410 <item> | |
411 הצורה <url>*.nginx.org</url> נתמכה החל מגירסה 0.1.13. | |
412 </item> | |
413 | |
414 </list> | |
415 </para> | |
416 | |
417 </section> | |
418 | |
419 </article> |