Nginx перенаправить все на www https - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу перенаправить все на https://www

Это мой блок конфигурации, где я пытался перенаправить не www на https, но не работает.

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

    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;

    location /auth {
        ...
    }

    location / {
       ...
    }

    ssl_certificate /root/certs/fullchain.pem;
    ssl_certificate_key /root/certs/privkey.pem;

}

http://example.com выдает ошибку 404

https://example.com не перенаправляет на https://www

http://www.example.com перенаправляет на https://www

https://www.example работает как есть

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018
server {
    listen 80;
    server_name example.com www.example.com
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com 
    ssl_certificate Certificate/For/example.com/fullchain
    ssl_certificate_key Key/For/example.com/ 
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443;
    server_name  www.example.com
    ssl_certificate Certificate/For/www.example.com/fullchain
    ssl_certificate_key Key/For/www.example.com/key

    //do whatever you want with your https://www.example.com connection

}   

Не забудьте иметь оба сертификата, один для www и один без, как если бы вы перенаправили пример на www без сертификата, это небезопасный шаг, и появится ошибка.

Надеюсь, япомог

0 голосов
/ 28 ноября 2018

Я думаю, что вы также должны указать имя сервера для сервера https:

server {
    server_name www.example.com
    listen 443 ssl;

    ...

    ssl_certificate /root/certs/fullchain.pem;
    ssl_certificate_key /root/certs/privkey.pem;

}

Также вы можете упростить http-серверы, объединив их в один:

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