Como servir o mesmo conteúdo para https e http com nginx?

1

Normalmente, minha configuração do nginx é assim:

server {
    listen       80;
    server_name  example.com;

    <some long config>
}

server {
    listen       443;
    server_name  example.com;

    ssl                 on;
    ssl_certificate     qwe.crt;
    ssl_certificate_key qwe.key;

    <the same long config>
}

Como encaminhar todas as solicitações https para a diretiva http server (não enviar redirecionamento para o cliente, mas encaminhar para dentro do nginx) para que eu não precise escrever a mesma configuração duas vezes?

    
por Poma 27.03.2013 / 09:36

2 respostas

0

Solução encontrada:

server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;

    <some long config>
}
    
por 27.03.2013 / 10:06
0

Você simplesmente tem duas diretivas de servidor ...

  • Um que escuta na porta 80 e reescreve
  • E outro que escuta na porta 443 e é sua configuração principal

Claro que você pode fazer o inverso (https redirecionar para http) não faz diferença.

No Nginx, como posso reescrever todas as requisições http para https mantendo o subdomínio?

server {
       listen         80;
       server_name    my.domain.com;
       rewrite        ^ https://$server_name$request_uri? permanent;
}

server {
       listen         443;
       server_name    my.domain.com;

       ssl            on;

       [....]
}
    
por 04.04.2013 / 14:23