Estou escrevendo um aplicativo que usa pesquisas longas para enviar mensagens aos clientes. Não termina a solicitação quando termina de enviar uma mensagem: ela apenas libera. Funciona bem, mesmo quando faço proxy através do nginx e acesse-o pela internet.
upstream app {
server localhost:1000;
}
server {
listen 80;
location / {
proxy_pass http://app;
client_max_body_size 20m;
proxy_redirect off;
send_timeout 86400;
proxy_read_timeout 86400;
proxy_buffering off;
gzip off;
}
}
Isto é, até eu ativar o SSL no nginx. Então não vai mais flush. Eu posso contornar isso definindo ssl_buffer_size
para 1, mas isso afeta negativamente o desempenho.
server {
listen 443;
ssl_certificate cert.pem;
ssl_certificate_key key.pem;
ssl_buffer_size 1;
...
}
Com qualquer outro tamanho de buffer, o NginX não irá esvaziar o último buffer incompleto, a menos que o pedido termine. Existe alguma maneira de forçá-lo? Eu sou tola por querer isso?
Eu notei que o flush funciona enquanto a quantidade de dados estiver abaixo de 61450 bytes. Se você tentar liberar muito mais do que isso, ele iniciará o buffer.