Fastify plugin pentru a redirectiona cererea HTTP curenta catre alt server. HTTP2 la HTTP este acceptat si.

Instalare

Compatibilitate cu fastify-multipart

fastify-reply-from si fastify-multipart nu ar trebui sa fie inregistrate ca pluginuri pentru frati si nici nu ar trebui sa fie inregistrate in pluginuri care au o relatie parinte-copil.

Cele doua pluginuri sunt incompatibile, in sensul ca comportamentul fastify-reply-from ar putea sa nu fie cel asteptat atunci cand conditiile mentionate mai sus nu sunt respectate.

Acest lucru se datoreaza faptului ca fastify-multipart consuma continutul multipart analizandu-l, prin urmare acest continut nu este redirectionat catre serviciul tinta prin fastify-reply-from.

Cu toate acestea, cele doua pluginuri pot fi utilizate in cadrul aceleiasi instante de fastify, cu conditia sa apartina ramurilor disjuncte ale arborelui ierarhic al pluginurilor fastify.

Utilizare

Urmatorul exemplu configureaza doua servere Fastify si redirectioneaza solicitarea de la unul la altul:

‘use strict’ const Fastify = require (‘fastify’) const target = Fastify ({logger: true}) target.get (‘/’, (request, reply) => {reply.send (‘hello world’)} ) const proxy = Fastify ({logger: true}) proxy.register (require (‘fastify-reply-from’), {base: ‘http: // localhost: 3001 /’}) proxy.get (‘/’, (request, reply) => {reply.from (‘/’)}) target.listen (3001, (err) => {if (err) {throw err} proxy.listen (3000, (err) => { daca (eroare) {arunca eroare}})})

API

Optiuni de plugin

baza

Setati adresa URL de baza pentru toate solicitarile redirectionate. Va fi necesar daca http2 este setat la adevarat Retineti ca fiecare cale va fi abandonata .

Protocoalele URL personalizate unix + http: si unix + https: pot fi utilizate pentru a redirectiona cereri catre un server socket unix utilizand querystring.escape (socketPath) ca nume de gazda. Acest lucru nu este acceptat pentru http2 si nici pentru undici. Pentru a ilustra:

const socketPath = require (‘querystring’). escape (‘/ run / http-daemon.socket’) proxy.register (require (‘fastify-reply-from’), {base: ‘unix + http: // $ { socketPath} / ‘});

undici

In mod implicit, undici va fi utilizat pentru a efectua solicitarile HTTP / 1.1. Activarea acestui semnal ar trebui sa garanteze cu 20-50% mai mult randament.

Acest semnal poate controla setarile clientului undici, astfel:

proxy.register (require (‘fastify-reply-from’), {base: ‘http: // localhost: 3001 /’, // setari implicite undici: {conexiuni: 128, pipelining: 1, keepAliveTimeout: 60 * 1000, tls: {refuseUnauthorized: false}}})

Vedeti optiunile proprii undici pentru mai multe configuratii.

http

Setati optiunea http la adevarat sau la un obiect pentru a utiliza Nodul http.request va fi utilizat daca nu activati http2. Pentru a personaliza cererea, puteti trece in agentOptiuni si solicitareOptiuni. Pentru a ilustra:

proxy.register (require (‘fastify-reply-from’), {base: ‘http: // localhost: 3001 /’, http: {agentOptions: {// treceti in orice optiuni de la https://nodejs.org/ api / http.html # http_new_agent_options keepAliveMsecs: 10 * 60 * 1000}, requestOptions: {// treceti in orice optiuni de la https://nodejs.org/api/http.html#http_http_request_options_callback timeout: 5000 // timeout in msecs, implicit la 10000 (10 secunde)}}})

De asemenea, puteti trece agenti HTTP personalizati. Daca treceti agentii, atunci http.agentOptions va fi ignorat. Pentru a ilustra:

proxy.register (require (‘fastify-reply-from’), {base: ‘http: // localhost: 3001 /’, http: {agents: {‘http:’: new http.Agent ({keepAliveMsecs: 10 * 60 * 1000}), // treceti in orice optiuni de la https://nodejs.org/api/http.html#http_new_agent_options ‘https:’: new https.

mature.com porno gay españoles
cine porno español inciesto español
porno hentail gorditas tetonas
abuelasputas rebeca linares masaje
zofilia xxx corridas a chorro
videos porno caseros españoles corriendose dentro
parejas pilladas follando peliculas porno gay en español
tetas en las playas concursos nudistas
penes negros videos porno subtitulados
porno retro maduras ariana grande porno
parejas liberales españolas trio con mi esposa
chupame las tetas incesto real xxx
amas de casa infieles incestos lesbicos
tata_latina follada real
porno libre www.sex
porno suizo corridas en el culo
heidi porno travestis maduras
xxxhd pornovideo
se corre dentro de su prima asiatica forzada
paja en publico muy jovencitas porno

Agent ({keepAliveMsecs: 10 * 60 * 1000})}, requestOptions: {// treceti in orice optiuni de la https://nodejs.org/api/http.html#http_http_request_options_callback timeout: 5000 // timeout in msecs, implicit la 10000 (10 secunde)}}})

http2

Puteti sa setati http2 la adevarat sau sa setati obiectul de setari pentru a va conecta la un server HTTP / 2. Obiectul setarilor http2 are forma:

proxy.register (require (‘fastify-reply-from’), {base: ‘http: // localhost: 3001 /’, http2: {sessionTimeout: 10000, // HTTP / 2 timeout sesiune in msecs, implicit la 60000 ( 1 minut) requestTimeout: 5000, // HTTP / 2 timeout solicitare in msecs, implicit la 10000 (10 secunde) sesiune Optiuni: {// Optiuni de conectare la sesiune HTTP / 2, treceti in orice optiuni de la https://nodejs.org/api /http2.html#http2_http2_connect_authority_options_listener refuseUnauthorized: true}, requestTimeout: {// HTTP / 2 optiuni de solicitare, treceti in orice optiuni de la https://nodejs.org/api/http2.html#http2_clienthttp2session_request_headers}

cacheURL-uri

Numarul de adrese URL analizate care vor fi memorate in cache. Implicit: 100.

disableCache

Aceasta optiune va dezactiva cache-ul URL. Acest cache este dedicat pentru a reduce cantitatea de generare a obiectelor URL. Generarea adreselor URL este un blocaj principal al acestui modul, va rugam sa dezactivati acest cache cu precautie.

contentTypesToEncode

O serie de tipuri de continut al caror corp de raspuns va fi transmis prin JSON.stringify (). Acest lucru se aplica numai atunci cand un corp personalizat nu este transmis. Implicit la:

[‘application / json’, ‘application / x-www-form-urlencoded’]

reincercatiMetode

Cu ce ​​metode ar trebui reincercata conexiunea in caz de inchidere a soclului.

Retineti ca setarea unei metode neidentificate poate duce la rezultate neasteptate asupra tintei.

In mod implicit: [‘GET’, ‘HEAD’, ‘OPTIONS’, ‘TRACE’]

reply.from (sursa, [opteaza])

Pluginul decoreaza instanta Raspuns cu o metoda from, care va raspunde la solicitarea originala din sursa dorita . Optiunile permit sa suprascrieti orice parte a cererii sau raspunsului trimisa sau primita catre / de la sursa.

Nota: Daca baza este specificata in optiunile pluginului, sursa de aici nu ar trebui sa suprascrie gazda / originea.

onResponse (cerere, raspuns, res)

Apelat atunci cand este primit un raspuns HTTP de la sursa. Comportamentul implicit este reply.send (res), care va fi dezactivat daca este specificata optiunea.

Cand raspundeti cu un corp de o lungime diferita, este necesar sa eliminati antetul lungimii continutului.

{onResponse: (request, reply, res) => {reply.removeHeader („lungimea continutului”); reply.send („Corp nou de lungime diferita”); }}

onError (raspuns, eroare)

Apelat atunci cand este primit un raspuns HTTP cu eroare de la sursa. Comportamentul implicit este reply.send (eroare), care va fi dezactivat daca este specificata optiunea. Trebuie sa raspunda la eroare.

rewriteHeaders (anteturi)

Apelat pentru a rescrie antetele raspunsului, inainte ca acestea sa fie copiate in raspunsul exterior. Trebuie sa returneze noul obiect antet.

rewriteRequestHeaders (originalReq, anteturi)

Apelat pentru a rescrie antetele cererii, inainte ca acestea sa fie trimise catre celalalt server. Trebuie sa returneze noul obiect antet.

getUpstream (originalReq, baza)

Apelat pentru a obtine destinatia din amonte, inainte ca cererea sa fie trimisa. Util cand doriti sa decideti ce server tinta sa apelati pe baza datelor solicitate. Util pentru lansarea treptata a noilor servicii. Trebuie sa returneze destinatia din amonte.

sir de interogare

Inlocuieste sirul de interogare original al cererii cu ceea ce este specificat. Aceasta va fi transmisa la querystring.stringify.

corp

Inlocuieste corpul de cerere original cu cel specificat. Daca nu este specificat contentType, continutul va fi transmis prin JSON.stringify (). Setand aceasta optiune pentru GET, solicitarile HEAD vor genera o eroare „Nu este permisa rescrierea corpului atunci cand faceti un {GET | HEAD}”.

reincercariCount

De cate ori va incerca sa aleaga o alta conexiune la inchiderea soclului (eroare ECONNRESET).

Util la mentinerea conexiunii deschise (KeepAlive).

Acest numar ar trebui sa fie o functie a numarului de conexiuni si a numarului de instante ale unei tinte.

In mod implicit: 0 (dezactivat)

tipul de continut

Inlocuiti antetul „Content-Type” al cererii redirectionate, daca deja suprascriem corpul.

Combinand cu fastify-formbody

formbody se asteapta ca corpul sa fie returnat ca un sir si nu ca un obiect. Utilizati optiunea contentTypesToEncode pentru a trece in [‘application / x-www-form-urlencoded’]

Expirari HTTP si HTTP2

Aceasta biblioteca are:

  • timeout pentru http setat implicit. Valoarea implicita este de 10 secunde (10000).
  • requestTimeout & sessionTimeout pentru http2 setat implicit.
    • Valoarea implicita pentru requestTimeout este de 10 secunde (10000).
    • Valoarea implicita pentru sessionTimeout este de 60 de secunde (60000).

Cand se intampla un timeout, 504 Gateway Timeout va fi returnat clientului.

A FACE

  • sustine suprasolicitarea corpului cu un flux
  • redirectionati ID-ul cererii catre celalalt partener ar putea necesita o refactorizare, deoarece trebuie sa facem req.id unic (a se vedea hyperid).
  • Suport HTTP HTTP de origine
  • repere

Licenta

MIT