Formazione di Express e Node.js da StrongLoop

Questa traduzione fornita da StrongLoop / IBM.

È possibile che questo documento non sia aggiornato poiché la documentazione è in inglese. Per gli ultimi aggiornamenti, fare riferimento alla documentazione in inglese.

Express con i proxy

Quando si esegue un’applicazione Express con un proxy, impostare (utilizzando app.set()) la variabile dell’applicazione trust proxy su uno dei valori elencati nella seguente tabella.

Anche se l’applicazione non presenterà errori nell’esecuzione se la variabile dell’applicazione trust proxy non è impostata, registrerà comunque in modo errato l’indirizzo IP del proxy come indirizzo IP del client a meno che non venga configurato trust proxy.

TipoValore
Booleano

Se impostato su true, l’indirizzo IP del client viene considerato come la voce a sinistra dell’intestazione X-Forwarded-*.

Se impostato su false, significa che l’applicazione abbia una connessione diretta a Internet e l’indirizzo IP del client sia arrivato da req.connection.remoteAddress. Questa è l’impostazione predefinita.

Indirizzi IP

Un indirizzo IP, una subnet o un array di indirizzi IP e subnet a cui fornire attendibilità. Il seguente elenco mostra i nomi di subnet preconfigurate:

  • loopback - 127.0.0.1/8, ::1/128
  • linklocal - 169.254.0.0/16, fe80::/10
  • uniquelocal - 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7

È possibile impostare gli indirizzi IP in uno dei seguenti modi:

app.set('trust proxy', 'loopback') // specify a single subnet
app.set('trust proxy', 'loopback, 123.123.123.123') // specify a subnet and an address
app.set('trust proxy', 'loopback, linklocal, uniquelocal') // specify multiple subnets as CSV
app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) // specify multiple subnets as an array

Quando specificati, gli indirizzi IP o le subnet vengono esclusi dal processo di determinazione dell’indirizzo e l’indirizzo IP non attendibile più vicino al server delle applicazioni viene considerato come indirizzo IP del client.

Numero

Considerare attendibile una parte del percorso nth dal server proxy principale come client.

Funzione

Implementazione attendibilità personalizzata. Questa funzione deve essere utilizzata solo da esperti.

app.set('trust proxy', function (ip) {
  if (ip === '127.0.0.1' || ip === '123.123.123.123') return true; // trusted IPs
  else return false;
});

Se si imposta un valore non false trust proxy si verificano tre importanti cambiamenti:

L’impostazione trust proxy viene implementata utilizzando il pacchetto proxy-addr. Per ulteriori informazioni, consultare la relativa documentazione.