Nginx não está enviando ativos gzipados ao passar por um balanceador de carga

1

Eu tenho um servidor nginx agindo como balanceador de carga, que delega solicitações para outros servidores de aplicativos.

Quando tento solicitar um ativo diretamente para o servidor de aplicativos, o recurso é exibido em sua versão gzipped, sample:

➜ ~ curl -IH 'Accept-Encoding: gzip, deflate' http://application/asset.css HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Thu, 15 Sep 2016 14:13:03 GMT Content-Type: text/css Content-Length: 35038 Connection: keep-alive Content-Encoding: gzip Expires: Thu, 31 Dec 2037 23:55:55 GMT Cache-Control: max-age=315360000 Cache-Control: public

Enquanto o mesmo pedido para o balanceador de carga, retorna a versão não compactada do recurso. ➜ ~ curl -IH 'Accept-Encoding: gzip, deflate' https://load-balancer/asset.css HTTP/1.1 200 OK Server: nginx/1.6.2 Date: Thu, 15 Sep 2016 14:16:15 GMT Content-Type: text/css Content-Length: 240442 Connection: keep-alive Expires: Thu, 31 Dec 2037 23:55:55 GMT Cache-Control: max-age=315360000 Cache-Control: public Accept-Ranges: bytes

Aqui minha configuração para o LB: location / { client_max_body_size 10M; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto https; # if use ssl proxy_redirect off; proxy_pass http://application; }

obrigado antecipadamente

    
por Iván Guillén 15.09.2016 / 16:32

2 respostas

1

Resolvido!

Eu mesmo descobri que a solicitação enviada do balanceador de carga para o upstream (servidor de aplicativos) é feita em HTTP / 1.0, enquanto o servidor nginx no lado do aplicativo apenas compactava os arquivos quando a solicitação estava em HTTP & gt ; = 1.1, devido a parâmetros padrão.

link

    
por 15.09.2016 / 16:46
2

Existe outra maneira de resolver isso. Você pode definir uma versão de protocolo HTTP mais alta para conexões proxy para upstream. Isso pode ser feito por este parâmetro: proxy_http_version 1.1;

Seria uma escolha melhor, pois dessa forma você pode se beneficiar de muitas vantagens do HTTP / 1.1, como conexões persistentes e novos códigos de status extra .

Por exemplo, este é o meu próprio bloco de configurações:

server {
    listen       80;
    server_name  domain.tld;
    location / {
         include proxy_params;
         proxy_http_version 1.1;
         proxy_pass http://my-up-stream;
    }
}

link

    
por 25.02.2018 / 09:36