Proxy#
Permite fazer proxy de fluxos de dados sobre sockets TCP, UDP e de domínio UNIX. Faz com que as conexões de saída para um servidor com proxy se originem do endereço IP local especificado. O valor do parâmetro pode conter variáveis. O valor especial O parâmetro Para que este parâmetro funcione,
os processos worker do Angie geralmente precisam executar
com privilégios de superusuário.
No Linux, isso não é necessário:
se o parâmetro Nota A tabela de roteamento do kernel também deve ser configurada
para interceptar o tráfego de rede do servidor com proxy. Define o tamanho do buffer usado para ler dados do servidor com proxy. Também define o tamanho do buffer usado para ler dados do cliente. Define um timeout para estabelecer uma conexão com um servidor com proxy. Habilita o encerramento de todas as sessões para o servidor com proxy após ele ter sido
removido do grupo ou marcado como permanentemente indisponível por um processo de reresolve ou pelo comando da API
Uma sessão é encerrada quando o próximo evento de leitura ou escrita é processado para
o cliente ou o servidor com proxy. Definir time habilita um timeout de encerramento de sessão;
com Limita a velocidade de leitura dos dados do servidor com proxy. A desabilita a limitação de taxa Nota O limite é definido por conexão, então se o Angie abrir simultaneamente duas conexões para o servidor com proxy, a taxa geral será o dobro do limite especificado. O valor do parâmetro pode conter variáveis. Pode ser útil em casos onde a taxa deve ser limitada dependendo de uma determinada condição: Habilita ou desabilita o fechamento independente de cada direção de uma conexão TCP ("TCP half-close"). Se habilitado, o proxy sobre TCP será mantido até que ambos os lados fechem a conexão. Quando uma conexão com o servidor com proxy não pode ser estabelecida, determina se uma conexão de cliente será passada para o próximo servidor no pool upstream. Passar uma conexão para o próximo servidor pode ser limitado pelo número de tentativas e por tempo. Limita o tempo permitido para passar uma conexão para o próximo servidor. desativa esta limitação Limita o número de tentativas possíveis para passar uma conexão para o próximo servidor. desativa esta limitação Define o endereço de um servidor com proxy. O ou como um caminho de socket de domínio UNIX: Se um nome de domínio resolve para vários endereços, todos eles serão usados de forma round-robin. Além disso, um endereço pode ser especificado como um grupo de servidores. O endereço também pode ser especificado usando variáveis: Neste caso, o nome do servidor é pesquisado entre os grupos de servidores descritos e, se não encontrado, é determinado usando um resolver. Habilita o protocolo PROXY para conexões com um servidor proxy. Define o número de datagramas do cliente no qual a vinculação entre um cliente e uma sessão de stream UDP existente é descartada. Após receber o número especificado de datagramas, o próximo datagrama do mesmo cliente inicia uma nova sessão. A sessão termina quando todos os datagramas do cliente são transmitidos para um servidor proxy e o número esperado de respostas é recebido, ou quando atinge um timeout. Define o número de datagramas esperados do servidor proxy em resposta a um datagrama do cliente se o protocolo UDP for usado. O número serve como uma dica para o término da sessão. Por padrão, o número de datagramas não é limitado. Se o valor zero for especificado, nenhuma resposta é esperada. No entanto, se uma resposta for recebida e a sessão ainda não estiver finalizada, a resposta será tratada. Configura o comportamento "TCP keepalive" para conexões de saída para um servidor proxy. Por padrão, as configurações do sistema operacional estão em vigor para o socket. A opção de socket SO_KEEPALIVE é ativada para o socket. Habilita o protocolo SSL/TLS para conexões com um servidor proxy. Especifica um arquivo com o certificado no formato PEM usado para autenticação em um servidor proxy. Variáveis podem ser usadas no nome do arquivo. Adicionado na versão 1.2.0. Quando proxy_ssl_ntls está habilitado, a diretiva aceita dois argumentos em vez de um: Especifica um arquivo com a chave secreta no formato PEM usado para autenticação em um servidor proxy. Variáveis podem ser usadas no nome do arquivo. Adicionado na versão 1.2.0. Quando proxy_ssl_ntls está habilitado, a diretiva aceita dois argumentos em vez de um: Especifica as cifras habilitadas para requisições a um servidor proxy. As cifras são especificadas no formato compreendido pela biblioteca OpenSSL. A lista de cifras depende da versão do OpenSSL instalada.
A lista completa pode ser visualizada usando o comando Aviso A diretiva No LibreSSL, cifras TLS 1.3 podem ser configuradas usando
No BoringSSL, cifras TLS 1.3 não podem ser configuradas. Define comandos de configuração OpenSSL arbitrários ao estabelecer uma conexão com o servidor proxy. Nota A diretiva é suportada quando usando OpenSSL 1.0.2 ou superior.
Para configurar cifras TLS 1.3 com OpenSSL, use o comando Várias diretivas proxy_ssl_conf_command podem ser especificadas no mesmo nível. Essas diretivas são herdadas do nível de configuração anterior se e somente se não há diretivas proxy_ssl_conf_command definidas no nível atual. Aviso Note que configurar o OpenSSL diretamente pode resultar em comportamento inesperado. Especifica um arquivo com certificados revogados (CRL) no formato PEM usado para verificar o certificado do servidor proxy. Permite sobrescrever o nome do servidor usado para verificar o certificado do servidor proxy e para ser passado através do SNI ao estabelecer uma conexão com o servidor proxy. O nome do servidor também pode ser especificado usando variáveis. Por padrão, o nome do host do endereço especificado pela diretiva proxy_pass é usado. Adicionado na versão 1.2.0. Habilita o suporte do lado do cliente para NTLS ao usar a biblioteca TLS TongSuo. Nota O Angie deve ser compilado usando o parâmetro de configuração Especifica um arquivo com senhas para chaves secretas onde cada senha é especificada em uma linha separada. As senhas são tentadas em sequência ao carregar a chave. Padrão stream, server Alterado na versão 1.2.0: O parâmetro Habilita os protocolos especificados para requisições a um servidor proxy. Habilita ou desabilita a passagem do nome do servidor
especificado pela diretiva proxy_ssl_name
através da
extensão TLS Server Name Indication
(SNI,
RFC 6066)
ao estabelecer uma conexão com o servidor proxy. Determina se as sessões SSL podem ser reutilizadas ao trabalhar com o servidor proxy. Se os erros "SSL3_GET_FINISHED:digest check failed" aparecerem nos logs, tente desabilitar a reutilização de sessão. Especifica um arquivo com certificados CA confiáveis no formato PEM usado para verificar o certificado do servidor proxy. Habilita ou desabilita a verificação do certificado do servidor proxy. Define a profundidade de verificação na cadeia de certificados do servidor proxy. Define um timeout entre duas operações sucessivas de leitura ou escrita nas conexões do cliente ou servidor proxy. Se nenhum dado for transmitido dentro deste tempo, a conexão é fechada. Adicionado na versão 1.4.0: PRO Define o tempo máximo de inatividade para uma conexão estabelecida com o servidor para verificações de saúde configuradas usando a diretiva upstream_probe (PRO); se este limite for excedido, a conexão será fechada. Limita a velocidade de leitura dos dados do cliente. A taxa é especificada em bytes por segundo. desabilita a limitação de taxa Nota O limite é definido por conexão, então se o cliente abrir simultaneamente duas conexões, a taxa geral será o dobro do limite especificado. O valor do parâmetro pode conter variáveis. Isso pode ser útil em casos onde a taxa deve ser limitada dependendo de uma determinada condição:Exemplo de Configuração#
server {
listen 127.0.0.1:12345;
proxy_pass 127.0.0.1:8080;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 1m;
proxy_pass example.com:12345;
}
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns.example.com:53;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
Diretivas#
proxy_bind#
off
cancela o efeito da diretiva proxy_bind herdada do nível de configuração anterior, o que permite ao sistema atribuir automaticamente o endereço IP local.transparent
permite que as conexões de saída para um servidor com proxy se originem de um endereço IP não local, por exemplo, de um endereço IP real de um cliente:proxy_bind $remote_addr transparent;
transparent
for especificado,
os processos worker herdam a capacidade CAP_NET_RAW do processo mestre.proxy_buffer_size#
proxy_connect_timeout#
proxy_connection_drop#
DELETE
.on
definido, as sessões são descartadas imediatamente.proxy_download_rate#
rate
é especificada em bytes por segundo.0
map $slow $rate {
1 4k;
2 8k;
}
proxy_download_rate $rate;
proxy_half_close#
proxy_next_upstream#
proxy_next_upstream_timeout#
0
proxy_next_upstream_tries#
0
proxy_pass#
address
pode ser especificado como um nome de domínio ou endereço IP, e uma porta:proxy_pass localhost:12345;
proxy_pass unix:/tmp/stream.socket;
proxy_pass $upstream;
proxy_protocol#
proxy_requests#
proxy_responses#
proxy_socket_keepalive#
off
on
proxy_ssl#
proxy_ssl_certificate#
server {
proxy_ssl_ntls on;
proxy_ssl_certificate sign.crt enc.crt;
proxy_ssl_certificate_key sign.key enc.key;
proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";
proxy_pass backend:12345;
}
proxy_ssl_certificate_key#
server {
proxy_ssl_ntls on;
proxy_ssl_certificate sign.crt enc.crt;
proxy_ssl_certificate_key sign.key enc.key;
proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";
proxy_pass backend:12345;
}
proxy_ssl_ciphers#
openssl ciphers
.proxy_ssl_ciphers
não configura cifras para TLS 1.3 quando
usando OpenSSL. Para configurar cifras TLS 1.3 com OpenSSL, use a
diretiva proxy_ssl_conf_command, que foi adicionada para configuração
SSL avançada.proxy_ssl_ciphers
.proxy_ssl_conf_command#
ciphersuites
.proxy_ssl_crl#
proxy_ssl_name#
proxy_ssl_ntls#
server {
proxy_ssl_ntls on;
proxy_ssl_certificate sign.crt enc.crt;
proxy_ssl_certificate_key sign.key enc.key;
proxy_ssl_ciphers "ECC-SM2-WITH-SM4-SM3:ECDHE-SM2-WITH-SM4-SM3:RSA";
proxy_pass backend:12345;
}
--with-ntls
, com a biblioteca SSL correspondente com suporte NTLS./configure --with-openssl=../Tongsuo-8.3.0 \
--with-openssl-opt=enable-ntls \
--with-ntls
proxy_ssl_password_file#
proxy_ssl_protocols#
proxy_ssl_protocols
[SSLv2
] [SSLv3
] [TLSv1
] [TLSv1.1
] [TLSv1.2
] [TLSv1.3
];proxy_ssl_protocols TLSv1.2 TLSv1.3;
TLSv1.3
foi adicionado ao conjunto padrão.proxy_ssl_server_name#
proxy_ssl_session_reuse#
proxy_ssl_trusted_certificate#
proxy_ssl_verify#
proxy_ssl_verify_depth#
proxy_timeout#
upstream_probe_timeout (PRO)#
proxy_upload_rate#
0
map $slow $rate {
1 4k;
2 8k;
}
proxy_upload_rate $rate;