nginx www e não www para não www https

1

Quero que www e não www urls cheguem a não www em https.

Eu tenho os seguintes blocos na minha configuração NGINX:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

server {
    # SSL configuration
    #
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    ...
}

O problema é que o www de example.com ainda é traduzido para www.example.com em https, enquanto eu quero remover o www.

Eu realmente não vejo o que sinto falta aqui ...

    
por Gerard van den Bosch 11.01.2017 / 03:19

1 resposta

2

A maneira mais fácil é retornar para 301 se você tiver um SSL que corresponda aos dois domínios.

Opção sem suporte a SNI

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

server {
    # SSL configuration
    #
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

if ($http_host = www.example.com) {
        rewrite  (.*)  https://example.com$request_uri;
    }
    ...
}

Se não, você precisará do SNI, ou outro IP para o registro www e, em seguida, um temp ssl (como o Letsencrypt) para redirecionar seus usuários para o domínio correto.

Opção com suporte a SNI

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

server {
    # SSL configuration
    #
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name www.example.com;
    return 301 https://example.com$request_uri;

...
}
    
por 11.01.2017 / 03:33

Tags