Ao implementar um site, é comum a necessidade de garantir que todo o tráfego seja direcionado para a versão segura (HTTPS), especialmente após a instalação de um certificado SSL. Se o seu servidor Nginx, configurado como proxy reverso, permite o acesso tanto por HTTP quanto por HTTPS, você precisará ajustar a configuração para forçar o redirecionamento.
Inicialmente, a configuração pode ter um bloco server que escuta em ambas as portas, 80 (HTTP padrão) e 443 (HTTPS), como demonstrado abaixo:
server {
listen 80;
listen 443 ssl;
server_name seu-dominio.com www.seu-dominio.com;
ssl_certificate /etc/nginx/certs/seu-dominio.com_bundle.pem;
ssl_certificate_key /etc/nginx/certs/seu-dominio.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.1.138:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Esta configuração permite que o Nginx rseponda a requisições em ambas as portas, resultando em acessibilidade via HTTP e HTTPS.
Para forçar o redirecionamento para HTTPS, separe as configurações em dois blocos server distintos:
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name seu-dominio.com www.seu-dominio.com;
ssl_certificate /etc/nginx/certs/seu-dominio.com_bundle.pem;
ssl_certificate_key /etc/nginx/certs/seu-dominio.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://xxx.xx.xxx.xxx:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nesta cofniguração:
- O primeiro bloco
serverescuta na porta 80 (HTTP). Quando uma requisição chega, ele retorna um código de status 301 (redirecionamento permanente) instruindo o cliente a acessar o mesmo recurso via HTTPS, usando o nome do servidor e o URI original. - O segundo bloco
serveré responsável pelo tráfego HTTPS, escutando na porta 443 e configurando os parâmetros SSL conforme necessário. Ele processa as requisições para o seu aplicativo proxy.
Essa separação garante que todo o tráfego HTTP seja automaticamente redirecionado para a conexão segura HTTPS.
Uma alternativa, embora menos comum para o servidor web em si, é usar uma meta tag de atualização em uma página HTML para redirecionar o usuário. Isso pode ser útil em cenários específicos onde você controla o conteúdo da página de redirecionamento:
<html>
<meta http-equiv="refresh" content="0;url=https://exemplo.com/">
</html>
Ao carregar esta página, o navegador do usuário será imediatamente redirecionado para a URL HTTPS especificada.