Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/njs/index.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Nginx, Inc.
5
-->
6
7
<!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
8
9
<article name="Модуль nginx JavaScript"
10
link="/ru/docs/njs/index.html"
11
lang="ru"
12
rev="38"
13
toc="no">
14
15
<section id="summary">
16
17
<para>
18
njs - это модуль nginx, который расширяет возможности сервера nginx с помощью
19
сценариев JavaScript, позволяя создавать пользовательскую
20
логику на стороне сервера и выполнять <link id="usecases">другие задачи</link>.
21
</para>
22
23
<para>
24
<note>
25
Встроенный JavaScript-движок
26
<link doc="engine.xml" id="njs_engine">njs</link>
27
объявлен устаревшим
28
начиная с <link doc="changes.xml" id="njs1.0.0">1.0.0</link>;
29
в новых конфигурациях следует использовать движок
30
<link doc="engine.xml" id="quickjs_engine">QuickJS</link>.
31
</note>
32
</para>
33
34
</section>
35
36
37
<section id="links">
38
39
<para>
40
<list type="bullet">
41
42
<listitem>
43
<link doc="install.xml"/>
44
</listitem>
45
46
<listitem>
47
<link doc="changes.xml">Изменения в njs</link> [en]
48
</listitem>
49
50
<listitem>
51
<link doc="reference.xml">Справочник</link> [en]
52
</listitem>
53
54
<listitem>
55
<link doc="engine.xml"/>
56
</listitem>
57
58
<listitem>
59
<link doc="native_modules.xml"/>
60
</listitem>
61
62
<listitem>
63
<link url="https://github.com/nginx/njs-examples/">Примеры использования</link>
64
</listitem>
65
66
<listitem>
67
<link doc="security.xml">Безопасность</link> [en]
68
</listitem>
69
70
<listitem>
71
<link doc="compatibility.xml"/>
72
</listitem>
73
74
<listitem>
75
<link doc="cli.xml"/>
76
</listitem>
77
78
<listitem>
79
<link doc="preload_objects.xml"/>
80
</listitem>
81
82
<listitem>
83
<link id="tested_os_and_platforms">Протестированные ОС и платформы</link>
84
</listitem>
85
86
</list>
87
</para>
88
89
<para>
90
<list type="bullet">
91
92
<listitem>
93
<link doc="../http/ngx_http_js_module.xml">
94
ngx_http_js_module</link>
95
</listitem>
96
97
<listitem>
98
<link doc="../stream/ngx_stream_js_module.xml">
99
ngx_stream_js_module</link>
100
</listitem>
101
102
</list>
103
</para>
104
105
<para>
106
<list type="bullet">
107
108
<listitem>
109
<link doc="typescript.xml"/>
110
</listitem>
111
112
<listitem>
113
<link doc="node_modules.xml"/>
114
</listitem>
115
116
</list>
117
</para>
118
119
</section>
120
121
122
<section id="usecases" name="Сценарии использования">
123
124
<para>
125
<list type="bullet">
126
127
<listitem>
128
Комплексное управление доступом и проверка защиты при помощи njs
129
до получения запроса сервером группы
130
</listitem>
131
132
<listitem>
133
Управление заголовками ответа
134
</listitem>
135
136
<listitem>
137
Создание гибких асинхронных обработчиков содержимого и фильтров
138
</listitem>
139
140
</list>
141
Подробнее о сценариях использования
142
см. в <link url="https://github.com/nginx/njs-examples/">примерах</link>.
143
</para>
144
145
</section>
146
147
148
<section id="example" name="Базовый пример HTTP">
149
150
<para>
151
Чтобы использовать njs в nginx, необходимо:
152
<list type="bullet">
153
154
<listitem>
155
<para>
156
<link doc="install.xml">установить</link> njs
157
</para>
158
</listitem>
159
160
<listitem id="hello_world">
161
<para>
162
создать файл сценария njs, например <path>http.js</path>.
163
Описание свойств и методов языка njs
164
см. в <link doc="reference.xml">справочнике</link>.
165
<example>
166
function hello(r) {
167
r.return(200, "Hello world!");
168
}
169
170
export default {hello};
171
</example>
172
</para>
173
</listitem>
174
175
<listitem>
176
177
<para>
178
в файле <path>nginx.conf</path> включить
179
модуль <link doc="../http/ngx_http_js_module.xml">ngx_http_js_module</link>
180
и указать директиву
181
<link doc="../http/ngx_http_js_module.xml" id="js_import">js_import</link>
182
с файлом сценария <path>http.js</path>:
183
<example>
184
load_module modules/ngx_http_js_module.so;
185
186
events {}
187
188
http {
189
# начиная с 0.9.1
190
js_engine qjs;
191
192
js_import http.js;
193
194
server {
195
listen 8000;
196
197
location / {
198
js_content http.hello;
199
}
200
}
201
}
202
</example>
203
</para>
204
</listitem>
205
206
</list>
207
Также доступна отдельная утилита <link doc="cli.xml">командной строки</link>,
208
которая может использоваться независимо от nginx для разработки и отладки njs.
209
</para>
210
211
</section>
212
213
214
<section id="tested_os_and_platforms"
215
name="Протестированные ОС и платформы">
216
217
<para>
218
<list type="bullet">
219
220
<listitem>
221
FreeBSD / amd64;
222
</listitem>
223
224
<listitem>
225
Linux / x86, amd64, arm64, ppc64el;
226
</listitem>
227
228
<listitem>
229
Solaris 11 / amd64;
230
</listitem>
231
232
<listitem>
233
macOS / x86_64;
234
</listitem>
235
236
</list>
237
</para>
238
239
</section>
240
241
242
<section id="presentation" name="Презентация на nginx.conf 2018">
243
244
<para><video id="Jc_L6UffFOs" /></para>
245
246
</section>
247
248
</article>
249
250