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