https www não é possível redirecionar para não www www nginx

1

Não consigo redirecionar meu https://www para https:// Como atualmente o site pensa que www . é um site completamente separado. Eu quero redirecionar corretamente, mas quando eu adiciono configuração no que eu acho que está correto recebo um redirecionamento infinito. Não-https www redireciona corretamente. O único problema é https://www .

Aqui está minha configuração do nginx, talvez eu esteja perdendo algo. Eu removi o https://www redirecionado porque não consigo acertar.

server {
    listen 192.168.0.123:80;
    server_name www.site.com site.com;

    location /rss/main/ {
            uwsgi_pass unix:///tmp/site.com.sock;
            include uwsgi_params;
    }

    location / {
            rewrite ^ https://site.com$request_uri permanent;
    }

}
server {
        listen 192.168.0.123:443 ssl;
        server_name site.com;
        access_log /var/log/nginx/site.com_access.log;
        error_log /var/log/nginx/site.com_error.log;

        ssl_certificate /srv/ssl/site_com.crt;
        ssl_certificate_key /srv/ssl/site.com.key;

        location / {
                uwsgi_pass unix:///tmp/site.com.sock;
                include uwsgi_params;
        }

        location /static/ {
                alias /var/www/site.com/static_final/;
        }

        location /media/ {
                alias /var/www/assets/site/;
    }
}

Qualquer ajuda é apreciada, pois não quero que as pessoas acessem acidentalmente o www.

    
por percent20 05.07.2013 / 01:16

2 respostas

2

Para um redirecionamento 301 simples, poderíamos usar a diretiva retornar .

server {
        listen 192.168.0.123:443 ssl;
        server_name www.site.com;

        ssl_certificate /srv/ssl/site_com.crt;
        ssl_certificate_key /srv/ssl/site.com.key;

        return 301 $scheme://site.com$request_uri;
}

Isso é efetivamente o mesmo que a resposta de Alan, mas usando o retorno diretiva podemos evitar completamente a avaliação da expressão regular .

    
por 06.07.2013 / 05:05
3

Suponho que o seu certificado SSL abrange o site www.site.com e o site.com. O seguinte pareceria ser a maneira mais apropriada de lidar com isso?

server {
        listen 192.168.0.123:443 ssl;
        server_name www.site.com;

        ssl_certificate /srv/ssl/site_com.crt;
        ssl_certificate_key /srv/ssl/site.com.key;

        rewrite ^ https://site.com$request_uri permanent;
}
    
por 05.07.2013 / 23:53