Nginx: desativa a compactação gzip apenas para https

2

Por causa da vulnerabilidade BRECH, eu gostaria de desativar a compactação gzip para o tráfego TLS, mas não para o tráfego HTTP regular.

Eu poderia dividir cada seção Nginx server em duas seções TLS e não-TLS separadas e configurar o gzip lá, mas com uma dúzia de sites em execução no mesmo servidor da Web eu prefiro não fazer isso para cada seção do servidor .

É possível desativar a compactação gzip para todas as solicitações HTTPS sem criar várias seções server (por exemplo, da seção http )?

    
por Danilo Bargen 07.10.2013 / 12:00

3 respostas

1

Infelizmente, acho que a melhor resposta é separar seus servidores em http e https. Eu tenho em torno de uma dúzia de sites no meu servidor web, eu tenho servidor três blocos de servidores por domínio - link serve o tráfego, os outros três apenas para a frente ( link . http: //, https: //).

Geralmente, você não quer veicular o mesmo conteúdo em http e https para SEO, pelo menos não sem deixar claro qual é o conteúdo canônico (ou seja, o principal).

Obviamente, a configuração abaixo é apenas relevante para essa resposta, não para uma configuração completa.

# Main Nginx config file
http {
  gzip on;

  # https site, usually in a file with any other servers for this domain
  server {
    server_name www.example.com;
    listen 443 ssl http2;
    gzip off;
  }

  # http site that forwards to https
  server {
    server_name www.example.com example.com;
    listen       80;
    server_name  example.com www.example.com;
    access_log  /var/log/nginx/access.log;
    return       301 https://www.example.com$request_uri;
  }

  # https / non www server skipped as it's obvious
}

Redução da duplicação

Se você realmente deseja veicular o mesmo site em http e https e quiser reduzir a duplicação de itens como suas configurações de local, é possível fazer algo assim. O server_name e vai no arquivo incluído, mas isso é um pouco opaco.

  # https site, usually in a file with any other servers for this domain
  server {
    server_name www.example.com;
    listen 443 ssl http2;
    gzip off;

    # include the locations, which is common to http and https
    include /etc/nginx/sites-enabled/example_com_location.conf;
  }

  # http site that forwards to https
  server {
    server_name www.example.com example.com;
    listen       80;
    server_name  example.com www.example.com;
    include /etc/nginx/sites-enabled/example_com_location.conf;
  }
    
por 25.03.2017 / 04:26
1

Existe uma diferença entre a compactação SSL e a compactação regular de HTML / gzip. Para proteger contra a vulnerabilidade BRECH somente o primeiro deve ser desativado. Consulte Desativar desinflar compactação no nginx SSL e esta página .

    
por 06.12.2017 / 10:18
0

Tente isto

if ($scheme = https) {
    gzip off;
}

Referência

    
por 07.10.2013 / 12:25