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

Como instalar a plataforma LiteCart Shopping Cart no Ubuntu 16.04

Como instalar a plataforma LiteCart Shopping Cart no Ubuntu 16.04

LiteCart é uma plataforma de carrinho de compras de código aberto e gratuita escrita em PHP, jQuery e HTML 5. É um software de comércio eletrônico simples, leve e fácil de usar

Configuração inicial segura do servidor Ubuntu 18.04

Configuração inicial segura do servidor Ubuntu 18.04

Introdução Neste tutorial, você aprenderá como configurar um nível básico de segurança em uma nova máquina virtual Vultr VC2 executando o Ubunt

Instalando o McMyAdmin no Ubuntu 14.10

Instalando o McMyAdmin no Ubuntu 14.10

McMyAdmin é um painel de controle do servidor Minecraft usado para administrar seu servidor. Embora o McMyAdmin seja gratuito, há várias edições, algumas das quais são pai

Configurar um TeamTalk Server no Linux

Configurar um TeamTalk Server no Linux

O TeamTalk é um sistema de conferência que permite aos usuários ter conversas de áudio / vídeo de alta qualidade, bate-papo por texto, transferir arquivos e compartilhar telas. É eu

Como instalar e configurar o CyberPanel no servidor CentOS 7

Como instalar e configurar o CyberPanel no servidor CentOS 7

Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi

Instale o Grafana no Ubuntu 16.04 LTS

Instale o Grafana no Ubuntu 16.04 LTS

Usando um sistema diferente? Introdução O Grafana é um software de código aberto que transforma vários feeds de sistemas como Graphite, Telegraf, um

Instale o phpBB com Apache no Ubuntu 16.04

Instale o phpBB com Apache no Ubuntu 16.04

PhpBB é um programa de boletim de código aberto. Este artigo mostra como instalar o phpBB em cima de um servidor Apache no Ubuntu 16.04. Foi writte

Como instalar o Foreman no Ubuntu 16.04 LTS

Como instalar o Foreman no Ubuntu 16.04 LTS

Usando um sistema diferente? O Foreman é uma ferramenta gratuita e de código aberto que ajuda na configuração e gerenciamento de servidores físicos e virtuais. Forema

Configurar um usuário não root com Sudo Access no Ubuntu

Configurar um usuário não root com Sudo Access no Ubuntu

Ter apenas um usuário, que é root, pode ser perigoso. Então vamos consertar isso. O Vultr nos dá a liberdade de fazer o que quisermos com nossos usuários e servidores

Instale o eSpeak no CentOS 7

Instale o eSpeak no CentOS 7

Usando um sistema diferente? O ESpeak pode gerar arquivos de áudio de conversão de texto em fala (TTS). Isso pode ser útil por vários motivos, como criar seu próprio Turim

Instalando o Fuel CMS no Ubuntu 16.04 LTS

Instalando o Fuel CMS no Ubuntu 16.04 LTS

Usando um sistema diferente? O Fuel CMS é um sistema de gerenciamento de conteúdo baseado em CodeIgniter. Seu código fonte está hospedado no GitHub. Este guia mostra como você pode

Como instalar o Couch CMS 2.0 em um VPS Debian 9 LAMP

Como instalar o Couch CMS 2.0 em um VPS Debian 9 LAMP

Usando um sistema diferente? O Couch CMS é um sistema de gerenciamento de conteúdo (CMS) simples e flexível, gratuito e de código aberto que permite que os web designers

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Usando um sistema diferente? O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Ele usa o SNMP para obter os dados de diferentes dispositivos. Uma variedade

Como usar o Sudo no Debian, CentOS e FreeBSD

Como usar o Sudo no Debian, CentOS e FreeBSD

Usar um usuário sudo para acessar um servidor e executar comandos no nível raiz é uma prática muito comum entre o Linux e o Unix Systems Administrator. O uso de um sud

Como instalar o RabbitMQ no CentOS 7

Como instalar o RabbitMQ no CentOS 7

Usando um sistema diferente? O RabbitMQ é um intermediário de mensagens de código aberto amplamente usado, escrito na linguagem de programação Erlang. Como um middleware orientado a mensagens

Como ativar o TLS 1.3 no Apache no Fedora 30

Como ativar o TLS 1.3 no Apache no Fedora 30

Usando um sistema diferente? O TLS 1.3 é uma versão do protocolo TLS (Transport Layer Security) publicada em 2018 como um padrão proposto no RFC 8446

Configurando um Chroot no Debian

Configurando um Chroot no Debian

Este artigo ensinará como configurar uma prisão chroot no Debian. Presumo que você esteja usando o Debian 7.x. Se você estiver executando o Debian 6 ou 8, isso pode funcionar, mas

Como instalar o PiVPN no Debian

Como instalar o PiVPN no Debian

Introdução Uma maneira fácil de configurar um servidor VPN no Debian é com o PiVPN. PiVPN é um instalador e wrapper para o OpenVPN. Ele cria comandos simples para você t

Configurar o Nginx-RTMP no CentOS 7

Configurar o Nginx-RTMP no CentOS 7

Usando um sistema diferente? O RTMP é ótimo para veicular conteúdo ao vivo. Quando o RTMP é emparelhado com o FFmpeg, os fluxos podem ser convertidos em várias qualidades. Vultr i

Como instalar e configurar o CyberPanel no Ubuntu 18.04 LTS

Como instalar e configurar o CyberPanel no Ubuntu 18.04 LTS

Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi

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.