Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
A client that makes a request for an «http» URI without prior knowledge about support for HTTP/2 on the next hop uses the HTTP Upgrade mechanism (Section 6.7 of [RFC7230]). The client does so by making an HTTP/1.1 request that includes an Upgrade header field with the «h2c» token.http2.github.io/http2-spec/#rfc.section.3.2
…
A server MUST ignore an «h2» token in an Upgrade header field. Presence of a token with «h2» implies HTTP/2 over TLS, which is instead negotiated as described in Section 3.3.
A server that supports HTTP/2 accepts the upgrade with a 101 (Switching Protocols) response. After the empty line that terminates the 101 response, the server can begin sending HTTP/2 frames. These frames MUST include a response to the request that initiated the upgrade.
Сам скрипт запускается посредством директивы js_run и позволяет прямо на стороне сервера (что я несу?)… Нет, прямо в самом сервере выполнять многие низкоуровневые операции с запросом, без необходимости написания отдельного модуля на языке Си/Lua или на чем там еще пишут и решают такие задачи.Относительно простые вещи раньше можно было делать на lua и perl. Чтобы написать модуль для nginx'а на C надо очень заморочиться. Документации по nginx internals не сильно много, комментарием в коде и того меньше…
Но если рассматривать не игрушечный бизнес, то сколько компаний пишут софт для микроконтроллеров на javascript?
Но вдруг надо сделать какой-то подвыперт…
Custom Request Routing.
With the location block in NGINX you can route traffic based on URI. With nginScript you can route traffic based on any data in the request, including cookies, headers, arguments, or any keywords in the request body. The following example routes traffic based on the presence of an argument named upstream:
upstream my_upstream0 {
server server1.example.com;
server server2.example.com;
}
upstream my_upstream1 {
server server3.example.com;
server server4.example.com;
}
js_set $my_upstream "
var s, upstream, upstream_num;
upstream = $r.args.upstream;
// convert upstream number to integer
upstream_num = +upstream | 0;
if (upstream_num < 0 || upstream_num > 1) {
upstream_num = 0;
}
s = 'my_upstream' + upstream_num;
s;
";
server {
listen 80;
location / {
proxy_set_header Host $host;
proxy_pass http://$my_upstream;
}
}
Читал https://t.co/F9K8oSjgQO и радостно, довольно, заливисто смеялся: сервер NGINX станет напоминать сервер Express.js в скором времени!…
— Mithgol (@FidonetRunes) 24 сентября 2015
Lua был хорошим претендентом, но он не так широко распространен в кругах web-разработчиков
JScript – это версия JavaScript от Microsoft. JScript основан на реализации стандарта ECMAScript. Синтаксис JScript во многом похож на язык JavaScript. Так же используется при создании вэб-страниц ASP.
JavaScript и Nginx = nginScript, а HTTP2 в придачу