Já está sabendo do HTTP/2? Ele é um protocolo de comunicação desenvolvido com o objetivo de ser o sucessor dos protocolos HTTP/1.x. Foi desenvolvido com base no SPDY, um protocolo do Google, que visava aumentar o desempenho de páginas web. Caso queira saber mais, veja o Papo Reto que fiz sobre esse assunto.
Neste artigo vou mostrar como compilar o Nginx com suporte a HTTP/2. Utilizei um Ubuntu 14.04 e o Docker para rodar a imagem. Você pode ver nosso Dockerfile no Github clicando aqui.
Note que o suporte ao HTTP/2 no Nginx ainda está em alpha! Recomendo fazer um ambiente de testes antes de colocar em produção.
Se quiser utilizar o Docker, baixe a imagem e execute-a utilizando os comandos abaixo. Troque /caminho/do/meu-site/ pelo caminho absoluto para a pasta do seu site.

$ docker pull devopsbluesoft/nginx-h2
$ docker run -d -p 8443:443 -v /caminho/do/meu-site/:/usr/local/nginx/html/ devopsbluesoft/nginx-h2

Acesse seu site pelo link https://localhost:8443. Lembre-se de trocar localhost pelo IP da máquina onde o Docker foi executado.
Se você não quiser utilizar o Docker, siga os passos a seguir.
Atualize e instale as dependências do Nginx.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc g++ make patch wget libpcre3-dev zlib1g-dev libssl-dev

Baixe o Nginx no diretório de sua preferência.

$ mkdir $HOME/src && cd $HOME/src
$ wget -O nginx-1.9.3.tar.gz http://nginx.org/download/nginx-1.9.3.tar.gz
$ tar xzf nginx-1.9.3.tar.gz

Baixe e aplique o patch para habilitar o HTTP/2 no Nginx.

$ cd nginx-1.9.3/
$ wget -O patch.http2.txt http://nginx.org/patches/http2/patch.http2.txt
$ patch -p1 < patch.http2.txt

Compile o Nginx. Talvez seja necessário habilitar mais opções no configure dependendo das suas necessidades. As opções abaixo servem para sites estáticos.

$ sudo mkdir -p /usr/local/nginx
$ ./configure --prefix=/usr/local/nginx/ --user=www-data --group=www-data --build=nginx-bsh2-1 --with-http_ssl_module --with-http_v2_module
$ make
$ sudo make install

Crie a chave e o certificado SSL.

$ sudo mkdir -p /usr/local/nginx/conf/ssl
$ sudo openssl genrsa -out /usr/local/nginx/conf/ssl/h2-server.key 2048
$ sudo openssl req -subj "/C=BR/ST=SP/L=São Paulo/O=Acme Inc/OU=DevOps" -new -key /usr/local/nginx/conf/ssl/h2-server.key -out /usr/local/nginx/conf/ssl/h2-server.csr
$ sudo openssl x509 -req -days 365 -in /usr/local/nginx/conf/ssl/h2-server.csr -signkey /usr/local/nginx/conf/ssl/h2-server.key -out /usr/local/nginx/conf/ssl/h2-server.crt

Conserte as permissões da chave e certificado.

$ sudo rm /usr/local/nginx/conf/ssl/h2-server.csr
$ sudo chown -R www-data:www-data /usr/local/nginx/conf/ssl
$ sudo chmod 0400 /usr/local/nginx/conf/ssl/h2-server.key
$ sudo chmod 0444 /usr/local/nginx/conf/ssl/h2-server.crt

Copie o nginx.conf.

$ wget https://raw.githubusercontent.com/bluesoft/dockerfiles/master/nginx-h2/nginx.conf.docker
$ sudo mv nginx.conf.docker /usr/local/nginx/conf/nginx.conf

Lembre-se de colocar o seu site em /usr/local/nginx/html.

$ sudo cp -R meu-site/* /usr/local/nginx/html/

Remova os arquivos baixados.

$ rm -r $HOME/src/nginx-1.9.3
$ rm $HOME/src/nginx-1.9.3.tar.gz

Inicie o Nginx.

$ sudo /usr/local/nginx/sbin/nginx -g "daemon off;"

Acesse seu site pelo link https://localhost. Lembre-se de trocar localhost pelo IP da máquina onde o Nginx foi instalado.
Para verificar se seu site realmente está sendo servido via HTTP/2, instale o SPDY indicator, para Firefox, ou o Chrome SPDY indicator, para o Chrome.
Parabéns! Você habilitou o HTTP/2 no seu site! 😀
Caso queira saber mais sobre o HTTP/2, confira o vídeo abaixo.

Até a próxima!

Autor

Ismael Soares é Gerente de Engenharia de Software na Bluesoft em São Paulo. É formado em banco de dados pela Faculdade Impacta de Tecnologia e possui mais de 14 anos com experiências em análise e desenvolvimento de sistemas. Já trabalhou com diversas tecnologias, entre elas: VB6, ASP, PHP, C#.NET, VB.NET, ASP.NET, PL/SQL, T-SQL, Groovy, Ruby e Java. Já participou de diversos projetos com banco de dados entre eles: Oracle, MSSQL Server, MySQL e Postgree.

Deixe aqui o seu comentário