Tenho certeza de que você pode usar um map :
map $scheme $myCustomTTL {
default 90;
http 90;
https 60;
}
add_header Keep-Alive timeout=$myCustomTTL;
Eu gostaria de evitar ter que repetir todos os blocos {} do servidor virtualhost no nginx apenas para ter configurações ssl personalizadas que variem um pouco das solicitações http simples.
A maioria das diretivas ssl pode ser colocada diretamente no bloco principal, exceto um obstáculo Não consigo encontrar uma solução alternativa para: keep-alive diferente para https vs http
Existe alguma maneira de usar o esquema $ para alterar dinamicamente o keepalive_timeout ?
Eu até considerei que posso usar more_set_input_headers -r 'Keep-Alive: timeout=60';
para condicionalmente substituir o tempo limite de keep-alive apenas se ele já existir, mas o problema é $scheme não pode ser usado em location ie. isso é inválido location ^https {}
Tenho certeza de que você pode usar um map :
map $scheme $myCustomTTL {
default 90;
http 90;
https 60;
}
add_header Keep-Alive timeout=$myCustomTTL;
Como parece que keepalive_timeout não pode ser usado com parâmetros, mas apenas com valores fixos, outra solução seria usar nginx como um ponto final SSL.
Suas solicitações SSL serão tratadas por um bloco server{} específico, que gerenciaria somente o handshake SSL e o valor Keep-Alive específico e encaminharia a solicitação HTTP simples para o bloco server {} principal.
Sua configuração nginx incluiria algo como o seguinte:
upstream plain_http {
server 127.0.0.1:80;
}
server {
listen 443;
server_name *.yourdomain.com;
ssl on;
ssl_certificate /etc/nginx/ssl/mycert.pem;
ssl_certificate_key /etc/nginx/ssl/mykey.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;
ssl_prefer_server_ciphers on;
keepalive_timeout 90;
location / {
proxy_pass http://plain_http;
proxy_redirect http:// https://;
}
}
A diretiva proxy_redirect informa ao nginx para reescrever o URI encontrado nos cabeçalhos Location e Refresh na resposta HTTP simples.
Tags nginx keepalive keep-alive