When running an Express app behind a proxy, set (by using app.set()) the application variable trust proxy
to one of the values listed in the following table.
Although the app will not fail to run if the application variable trust proxy
is not set, it will incorrectly register the proxy’s IP address as the client IP address unless trust proxy
is configured.
Setting a non-false
trust proxy
value results in three important changes:
The value of req.hostname is derived from the value set in the X-Forwarded-Host
header, which can be set by the client or by the proxy.
X-Forwarded-Proto
can be set by the reverse proxy to tell the app whether it is https
or http
or even an invalid name. This value is reflected by req.protocol.
The req.ip and req.ips values are populated with the list of addresses from X-Forwarded-For
.
The trust proxy
setting is implemented using the proxy-addr package. For more information, see its documentation.
© 2016 StrongLoop, IBM, and other expressjs.com contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v3.0.
http://expressjs.com/en/guide/behind-proxies.html