As tendências modernas da Internet ditam a utilização do protocolo de comunicação seguro https. Por isso, ao migrar, é importante que todo o tráfego que chega à porta http seja automaticamente redireccionado para https. Esta é uma condição importante não só para os sítios que podem perder algum tráfego, mas também para os utilizadores, para que ninguém possa quebrar uma ligação não segura. De seguida, vamos ver como configurar o redireccionamento de http para https no Nginx.
Recomendamos a utilização do redireccionamento com o código de estado 301, que indica aos motores de busca ou ao browser que a ligação atual foi actualizada e que deve ser actualizada na sua base de dados, por exemplo, nos favoritos do browser. Se abrirmos o ficheiro de configuração, podemos encontrar duas secções do servidor, para o sítio https e para o sítio http. Na secção http, basta redirecionar todos os pedidos para https utilizando a instrução de retorno e, na segunda secção, processar tudo. Por exemplo, a primeira secção:
server {
server_name losst.ru www.losst.ru;
charset off;
index index.php;
ssi on;
return 301 https://$host:443$request_uri;
set $root_path /var/www/losst/data/www/losst.ru;
root $root_path;
listen :80 default_server;
...
}
A segunda secção segue os pedidos na porta 433:
server {
server_name losst.ru www.losst.ru;
ssl on;
ssl_certificate "/var/www/losst/losst.ru_le2.crtca";
ssl_certificate_key "/var/www/losst/losst.ru_le2.key";
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
add_header Strict-Transport-Security "max-age=31536000;";
charset off;
index index.php;
set $root_path /var/www/losst/data/www/losst.ru;
root $root_path;
listen :443 default_server;
...
}
Como pode ver, a sintaxe neste caso é muito simples e clara. Assim, a instrução return permite-nos devolver os códigos de resposta do servidor necessários. Assim, devolvemos o código 301, o redireccionamento permanente e o URL para o qual vamos redirecionar o utilizador. Para além da diretiva return, pode utilizar a instrução rewrite, que executa exatamente as mesmas acções:
rewrite ^/(.*)$ https://losst.com/$1 permanent;
Na sintaxe das expressões regulares, pode adicionar o domínio em vez do retorno 301. Também pode utilizar esta construção sem um bloco de servidor separado:
if ($host ~* ^(losst.ru|www.losst.ru)$ ){
rewrite ^/(.*)$ https://losst.ru/$1 permanent;
}
Em seguida, é necessário guardar o ficheiro e verificar a configuração do Nginx. Para o efeito, é utilizado:
$ sudo nginx -t
Se tudo estiver correto, reinicie o Nginx:
$ sudo systemctl restart nginx
Verifique que tipo de resposta do servidor obtém com o curl:
$ curl -I losst.ru
Ou deixar o utilitário seguir o caminho completo do redireccionamento:
$ curl ILa losst.ru
Como pode ver, configurar um redireccionamento para https nginx é bastante simples, o trabalho é feito adicionando uma linha ao ficheiro de configuração, o resto são todos parâmetros adicionais.