Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Nginx ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π²ΡΠΏΡΡΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ·ΡΠΊΠ° JavaScript — njs 0.4.0. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ njs ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ ECMAScript ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Nginx ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π‘ΠΊΡΠΈΠΏΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠ²Π΅ΡΠ°, ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°/ΠΎΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°Π³Π»ΡΡΠ΅ΠΊ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
.
Π Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° js_import Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° JavaScript-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ»ΠΈ ΠΏΡΡΠ΅ΠΉ (location). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΌΠΎΠ΄ΡΠ»Π΅ foo.js ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ bar, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌΡ ΠΏΡΡΠΈ:
foo.js:
function bar(r) {
r.return(200);
}
export default {bar};
nginx.conf:
js_import foo.js;
location / {
js_content foo.bar;
}
Π ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ r.headersOut Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
function content(r) {
r.headersOut[‘Set-Cookie’] = [
‘foo=111; Max-Age=3600; path=/’,
‘bar=qqq; Max-Age=86400; path=/’
];
r.return(200);
}
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Rambler Group ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π² ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠ³Π°Π½Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΠ΄Π°ΡΠ°ΠΈ̆ΡΡΠ²Π° ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ ΡΠ³ΠΎΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ Π΄Π΅Π»Π°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Nginx. Π₯ΠΎΠ΄Π°ΡΠ°ΠΉΡΡΠ²ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ½Π΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Π΄Π΅ΠΊΠ°Π±ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²Π΅ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠ² Rambler Group ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Ρ Nginx Π² Π³ΡΠ°ΠΆΠ΄Π°Π½ΡΠΊΠΎ-ΠΏΡΠ°Π²ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ°ΡΡΠΎΡΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° Ρ ΡΡΠΈΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΈ̆ Lynwood Investments CY Ltd, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΠ»Π°ΡΡ Π² ΠΏΡΠ°Π²ΠΎΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΠ³Π°Π½Ρ, Π΄Π΅ΠΉΡΡΠ²ΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Rambler.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠ°ΡΡΠΎΡΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Lynwood Investments CY Ltd ΡΠΎΡ
ΡΠ°Π½ΠΈΠ»Π° Π·Π° ΡΠΎΠ±ΠΎΠΈ̆ ΠΏΡΠ°Π²ΠΎ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ±ΡΡΠΊΠΎΠ² ΠΈ ΠΈΡ
ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π΄Π΅Π»Ρ NGINX ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Π² ΡΠ²ΠΎΠΈΡ
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°Ρ
, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²Π° Π²Π΅ΡΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π΄Π΅Π» ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Rambler Group. ΠΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΡΡΠΈΡΡΠ° Π¦Π΅Π½ΡΡΠ° ΡΠΈΡΡΠΎΠ²ΡΡ
ΠΏΡΠ°Π² Ρ
ΠΎΠ΄Π°ΡΠ°ΠΉΡΡΠ²ΠΎ Rambler Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠ»Ρ, ΡΠ°ΠΊ ΡΠ³ΠΎΠ»ΠΎΠ²Π½ΠΎΠ΅ Π΄Π΅Π»ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠΌΠΈΡΠ΅Π½ΠΈΡ ΡΡΠΎΡΠΎΠ½ — ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠΎΡΡΠ°Π²Π° ΠΏΡΠ΅ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π² ΡΠ³ΠΎΠ»ΠΎΠ²Π½ΡΡ
Π΄Π΅Π»Π°Ρ
Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΎΡΠ³Π°Π½ΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru