Habilite o HTTP / 2 no Nginx no Ubuntu 16.04

HTTP / 2 é a nova versão do agora obsoleto protocolo HTTP / 1.1, padronizado em 1999. Muita coisa mudou na Web desde então. Nossas aplicações são mais complexas do que eram antes; portanto, para lidar com isso, era necessária uma mudança no protocolo de transporte subjacente. O mais importante sobre o HTTP / 2 é que ele tornará sua página da Web mais rápida para os usuários finais.

Em resumo, o HTTP / 2 adiciona 5 recursos principais:

  • Conexão única e persistente
  • Multiplexação
  • Compactação de cabeçalho
  • Priorização de recursos
  • Protege a camada de transporte (válida apenas para navegadores)

A explicação de todos esses recursos está fora do escopo deste tutorial, mas se você quiser se aprofundar neste tópico, recomendo um trecho do livro Rede de Navegadores de Alto Desempenho - trecho HTTP / 2 .

Neste guia, vamos instalar a versão estável mais recente do Nginx no Ubuntu 16.04 (Xenial), gerar certificado SSL autoassinado, ativar o protocolo HTTP / 2 no Nginx e instalar o navegador baseado em texto elinkspara atuar como cliente HTTP.

Instale o Nginx

Para instalar a última versão estável do Nginx, precisamos emitir alguns comandos:

  1. Precisamos fazer o download da chave pública PGP do Nginx usada para assinar pacotes e repositórios e adicioná-la ao chaveiro usado pelo gerenciador de pacotes para verificar a autenticidade dos pacotes baixados do repositório.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. Exclua a chave PGP do sistema de arquivos:

    rm nginx_signing.key
    
  3. Adicionar novo repositório

    printf "deb http://nginx.org/packages/ubuntu/ xenial nginx \ndeb-src http://nginx.org/packages/ubuntu/ xenial nginx \n" >> /etc/apt/sources.list.d/nginx.list
    
  4. Atualize sua lista de pacotes e instale o Nginx:

    apt update && apt install nginx -y
    
  5. Para verificar a versão do Nginx, podemos usar o seguinte:

    nginx -v 
    # nginx version: nginx/1.10.1
    

    Se tudo correr bem, você verá um padrão como 1.10.xna saída ao executar o nginx -vcomando.

Certificado autoassinado e HTTP / 2

Embora a especificação HTTP / 2 não force os navegadores a implementar HTTP / 2 sobre TLS, todos os principais navegadores decidiram implementar apenas HTTP / 2 sobre TLS, mas não qualquer versão TLS, apenas TLS 1.2 ou superior.

Vamos criar certificados autoassinados para o example.comdomínio fictício . Para a produção, você precisa de um domínio válido e usa uma CA confiável.

  1. Gere chave privada:

    openssl genrsa -aes128 -out example.com.key 2048
    

    Após executar este comando, você precisará digitar a senha 2 vezes. Como as senhas são irritantes, vamos removê-las.

  2. Remova a senha da chave privada:

    openssl rsa -in example.com.key -out example.com.key
    
  3. Gere solicitação de assinatura de certificado (CSR):

    openssl req -new -sha256 -key example.com.key -out cert-request.csr 
    

    Como estamos criando um certificado de domínio único, precisamos definir o campo de nome comum igual ao example.comdomínio

  4. Criar certificado:

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. Classifique o certificado e a chave privada:

    mkdir -p /etc/ssl/testing/private && mkdir /etc/ssl/testing/certs
    mv example.com.key /etc/ssl/testing/private && mv example.com.crt /etc/ssl/testing/certs
    
  6. Crie diretórios de host virtual nginx

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. Em seguida, execute nano /etc/nginx/nginx.confe encontre uma diretiva include /etc/nginx/conf.d/*.conf;. Abaixo desta diretiva, adicione include /etc/nginx/sites-enabled/*;Save ( CTRL + O ) e saia ( CTRL + X ).

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. Crie um arquivo chamado example.com.confdentro do /etc/nginx/sites-availablediretório com este comando nano /etc/nginx/sites-available/example.com.confe copie / cole o seguinte código:

    server {
        listen 80;
        listen [::]:80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;
        root /var/www/html;
        index index.nginx-debian.html;
    
        ssl_certificate /etc/ssl/testing/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/testing/private/example.com.key;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_prefer_server_ciphers on;
    }
    

    Parabéns, agora você tem o servidor da Web habilitado para HTTP / 2 . Adicionar http2parâmetro à listendiretiva dentro do host virtual HTTPS fornecerá suporte a HTTP / 2 .

  9. Crie um link simbólico para /etc/nginx/sites-available/example.com.confcom este comando:

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. Sintaxe de configuração de teste

    nginx -t
    
  11. Reinicie o Nginx para aplicar suas alterações:

    systemctl restart nginx
    
  12. Adicionar example.comdomínio ao /etc/hostsarquivo

    echo '127.0.0.1    example.com' >> /etc/hosts
    

Para testar seu host virtual, precisamos de um navegador baseado em texto - elinks.

  1. Para instalar elinks, use o seguinte comando:

    apt install elinks
    
  2. Para testar seu example.comhost virtual, execute:

    elinks https://example.com
    
  3. Para sair do navegador elinks, pressione q no teclado e pressione Enter .

Teste HTTP / 2

Para ver quais protocolos o servidor anuncia, a maneira mais fácil é usar o opensslkit de ferramentas.

    openssl s_client -connect example.com:443 -nextprotoneg ''

Na saída deste comando, você deve ver algo como isto:

    CONNECTED(00000003)
    Protocols advertised by server: h2, http/1.1      

Para ver o HTTP / 2 em ação, você pode usar as ferramentas de desenvolvedor do navegador. O protocolo HTTP / 2 é indicado com h2ou HTTP/2.0identificadores. Abra o painel de rede no dev-tools e atualize sua página.

Conclusão

Agora você deve estar ciente de quão "fácil" é habilitar o HTTP / 2 na configuração do Nginx, mas isso não faz parte da imagem geral. Primeiro, pense em ativar o TLS / SSL em seu servidor com pacotes de criptografia fortes e verifique se você não está usando cifras na lista negra . Somente após ativar o TLS / SSL forte em seu servidor, você poderá começar a pensar em ativar o HTTP / 2 .



Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.