Serveurs proxy derrière Express
When running an Express app behind a reverse proxy, some of the Express APIs may return different values than expected. In order to adjust for this, the trust proxy
application setting may be used to expose information provided by the reverse proxy in the Express APIs. The most common issue is express APIs that expose the client’s IP address may instead show an internal IP address of the reverse proxy.
When configuring the trust proxy
setting, it is important to understand the exact setup of the reverse proxy. Since this setting will trust values provided in the request, it is important that the combination of the setting in Express matches how the reverse proxy operates.
The application setting trust proxy
may be set to one of the values listed in the following table.
Type | Valeur |
---|---|
Booléen |
Si la valeur est Si la valeur est When setting to |
IP addresses |
An IP address, subnet, or an array of IP addresses and subnets to trust as being a reverse proxy. The following list shows the pre-configured subnet names:
Vous pouvez définir les adresses IP de l’une des manières suivantes :
S’ils sont spécifiés, les sous-réseaux ou les adresses IP sont exclus du processus d’identification d’adresse, et l’adresse IP sans confiance la plus proche du serveur d’applications est identifiée comme étant l’adresse IP du client. This works by checking if |
Numérique |
Use the address that is at most When using this setting, it is important to ensure there are not multiple, different-length paths to the Express application such that the client can be less than the configured number of hops away, otherwise it may be possible for the client to provide any value. |
Function |
Custom trust implementation.
|
Enabling trust proxy
will have the following impact:
-
La valeur de req.hostname est dérivée de l’ensemble de valeurs indiqué dans l’en-tête
X-Forwarded-Host
, qui peut être défini par le client ou par le proxy. -
X-Forwarded-Proto
peut être défini par le proxy inverse pour indiquer à l’application s’il s’agit dehttps
ou dehttp
, voire d’un nom non valide. Cette valeur est reflétée par req.protocol. -
Les valeurs req.ip et req.ips sont renseignées avec la liste des adresses provenant de
X-Forwarded-For
.
Le paramètre trust proxy
est implémenté à l’aide du package proxy-addr. Pour plus d’informations, consultez la documentation associée.