Você pode usar a reescrita no seu bloco de servidor http
server {
listen 80;
server_name test.domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
Esta é minha primeira configuração com nginx e estou usando para proxy para nodejs. HTTP está na porta 3000 e HTTPS está na porta 3001.
Se eu for para o link , ele carrega as páginas comuns não seguras. Se eu for para o link , ele carrega as páginas seguras. Mas eu quero redirecionar de não-https para https.
O que há de errado com minha configuração? Este é todo o arquivo domain.conf que estou usando.
server {
listen 80;
server_name test.domain.com
return 301 https://test.domain.com$request_uri;
}
server {
listen 443 ssl;
server_name test.domain.com;
ssl_certificate /etc/nginx/ssl/domain.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://127.0.0.1:3001;
proxy_redirect off;
}
}
Eu reiniciei o nginx várias vezes.
Obrigado!
Você pode usar a reescrita no seu bloco de servidor http
server {
listen 80;
server_name test.domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
Ausente ";" no final da linha. (ou apenas uma cópia / pasta quebrada?)
server_name test.domain.com;
Eu acho que você tem outro server_block operando no servidor padrão que substitui este sem nome de servidor válido
Dicas:
Se você deseja capturar todas as solicitações http com um bloco de servidores global, use default_server :
listen 80 default_server;
Você pode usar mais variáveis;)
return 301 https://test.domain.com$request_uri;
para
return 301 https://$host$request_uri;
Não use reescrita, o retorno é mais rápido.
Adicione essa linha na configuração da porta 80 para o redirecionamento automático para https com params, remova o retorno e ajuste a porta, se necessário.
if ($http_x_forwarded_proto != 'https') {
#rewrite ^(.*) https://$host$1 redirect;
}