Mercurial > hg > nginx-site
comparison xml/ru/docs/njs/examples.xml @ 2332:9d502d4305ac
Removed obsolete properties and examples from njs.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Tue, 26 Feb 2019 18:22:40 +0300 |
parents | 8cef5ef98336 |
children | aa20cba8027c |
comparison
equal
deleted
inserted
replaced
2331:5eba0f7b24a9 | 2332:9d502d4305ac |
---|---|
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> | 7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> |
8 | 8 |
9 <article name="Примеры использования" | 9 <article name="Примеры использования" |
10 link="/ru/docs/njs/examples.html" | 10 link="/ru/docs/njs/examples.html" |
11 lang="ru" | 11 lang="ru" |
12 rev="3"> | 12 rev="4"> |
13 | 13 |
14 <section id="helloword" name="Hello World"> | 14 <section id="helloword" name="Hello World"> |
15 | 15 |
16 <para> | 16 <para> |
17 <path>nginx.conf</path>: | 17 <path>nginx.conf</path>: |
303 </example> | 303 </example> |
304 </para> | 304 </para> |
305 | 305 |
306 </section> | 306 </section> |
307 | 307 |
308 | |
309 <section id="legacy" name="Устаревшие примеры"> | |
310 | |
311 <section id="legacy_stream" name="Внедрение HTTP-заголовка при помощи stream proxy"> | |
312 | |
313 <para> | |
314 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link> | |
315 <link doc="../stream/ngx_stream_js_module.xml" id="example">пример</link> | |
316 конфигурации в stream | |
317 был изменён. | |
318 Для njs <link doc="../njs/changes.xml" id="njs0.2.3">0.2.3</link> | |
319 и более ранних версий необходимо использовать следующий пример конфигурации: | |
320 <example> | |
321 load_module modules/ngx_stream_js_module.so; | |
322 ... | |
323 | |
324 stream { | |
325 js_include stream.js; | |
326 | |
327 js_set $foo foo; | |
328 js_set $bar bar; | |
329 | |
330 server { | |
331 listen 12345; | |
332 | |
333 js_preread qux; | |
334 return $foo; | |
335 } | |
336 | |
337 server { | |
338 listen 12346; | |
339 | |
340 js_access xyz; | |
341 proxy_pass 127.0.0.1:8000; | |
342 js_filter baz; | |
343 } | |
344 } | |
345 | |
346 http { | |
347 server { | |
348 listen 8000; | |
349 location / { | |
350 return 200 $http_foo\n; | |
351 } | |
352 } | |
353 } | |
354 </example> | |
355 </para> | |
356 | |
357 <para> | |
358 Файл <path>stream.js</path>: | |
359 <example> | |
360 var req = ''; | |
361 var matched = 0; | |
362 var line = ''; | |
363 | |
364 function qux(s) { | |
365 var n = s.buffer.indexOf('\n'); | |
366 if (n == -1) { | |
367 return s.AGAIN; | |
368 } | |
369 | |
370 line = s.buffer.substr(0, n); | |
371 } | |
372 | |
373 function foo(s) { | |
374 return line; | |
375 } | |
376 | |
377 function bar(s) { | |
378 var v = s.variables; | |
379 s.log("hello from bar() handler!"); | |
380 return "foo-var" + v.remote_port + "; pid=" + v.pid; | |
381 } | |
382 | |
383 // Фильтр обрабатывает один буфер за вызов. | |
384 // Буфер недоступен в s.buffer для | |
385 // чтения и записи. Вызывается в обоих направлениях. | |
386 | |
387 function baz(s) { | |
388 if (s.fromUpstream || matched) { | |
389 return; | |
390 } | |
391 | |
392 // Отключение определённых адресов. | |
393 | |
394 if (s.remoteAddress.match('^192.*')) { | |
395 return s.ERROR; | |
396 } | |
397 | |
398 // Чтение строки HTTP-запроса. | |
399 // Получение байт в 'req' до того как | |
400 // будет прочитана строка запроса. Очистка текущего буфера | |
401 // для отключения вывода. | |
402 | |
403 req = req + s.buffer; | |
404 s.buffer = ''; | |
405 | |
406 var n = req.search('\n'); | |
407 | |
408 if (n != -1) { | |
409 // Inject a new HTTP header. | |
410 var rest = req.substr(n + 1); | |
411 req = req.substr(0, n + 1); | |
412 | |
413 var addr = s.remoteAddress; | |
414 | |
415 s.log('req:' + req); | |
416 s.log('rest:' + rest); | |
417 | |
418 // Вывод результата и пропуск дальнейшей | |
419 // обработки. | |
420 | |
421 s.buffer = req + 'Foo: addr_' + addr + '\r\n' + rest; | |
422 matched = 1; | |
423 } | |
424 } | |
425 | |
426 function xyz(s) { | |
427 if (s.remoteAddress.match('^192.*')) { | |
428 return s.ABORT; | |
429 } | |
430 } | |
431 </example> | |
432 </para> | |
433 | |
434 </section> | |
435 | |
436 </section> | |
437 | |
438 </article> | 308 </article> |