Expresso atrás dos proxies
Ao executar um app Expresso atrás de um proxy reverso, alguns das APIs Express podem retornar valores diferentes do esperado. A fim de se ajustar para isto, a configuração do aplicativo trust proxy pode ser usada para expor informações fornecidas pelo proxy reverso na API Express. O problema mais comum é expressar APIs que expõem o endereço IP do cliente pode mostrar um endereço IP interno do proxy inverso.
Ao configurar a configuração proxy confiável, é importante entender a configuração exata do proxy reverso
. Como esta configuração confiará nos valores fornecidos na solicitação, é importante que
a combinação da configuração no Express corresponda a como o proxy reverso funciona.
A configuração do aplicativo ‘proxy confiável’ pode ser definida para um dos valores listados na tabela a seguir.
| Digite | Valor |
|---|---|
| Boolean | Se Se Ao definir como |
| endereços IP | Um endereço IP, subnet ou uma matriz de endereços IP e subnets para confiar como sendo um proxy reverso. A seguinte lista mostra os nomes das sub-redes pré-configuradas:
Você pode definir endereços IP das seguintes maneiras: Quando especificado, os endereços IP ou as subredes são excluídos do processo de determinação de endereço, e o endereço IP não confiável mais próximo do servidor de aplicativos é definido como o endereço IP do cliente. Isto funciona verificando se ‘req.socket.remoteAddress’ é confiável. Em caso afirmativo, então cada endereço em |
| Número | Use o endereço que, no máximo, está fora do número de hops do aplicativo Express. Ao usar esta configuração, é importante garantir que não haja vários, caminhos de comprimento diferente para o aplicativo Express, para que o cliente possa ser menor que o número configurado de saltos de distância, caso contrário, poderá ser possível que o cliente forneça qualquer valor. |
| Função | Execução de confiança personalizada. |
Habilitar trust proxy terá o seguinte impacto:
O valor de req.hostname é derivado do valor definido no cabeçalho
X-Forwarded-Host, que pode ser configurado pelo cliente ou pelo proxy.X-Forwarded-Protopode ser configurado pelo proxy reverso para dizer ao aplicativo se ele éhttpsouhttpou até mesmo um nome inválido. Este valor é refletido por req.protocol.Os valores req.ip e req.ips são preenchidos com base no cabeçalho do socket e
X-Forwarded-For, iniciando no primeiro endereço não confiável.
A configuração trust proxy é implementada usando o pacote proxy-addr. Para obter mais informações, consulte a documentação.