Назад | Перейти на главную страницу

Общий способ перенаправить весь трафик https без www на https в nginx

Можно ли разместить перенаправление в одном блоке сервера для перенаправления любых https (порт 443), у которых нет www, на https: // www ...? Я не хочу помещать это перенаправление в каждый отдельный блок сервера для каждого конкретного домена.

В настоящее время у меня есть это, но он не позволяет запускать nginx (в Windows):

server {
    listen 443 ssl;
    server_name _;

    if ($host !~* ^www\.(.*)$) {
        return 301 https://www.$host$request_uri;
    }
}
server {
    listen       443 ssl;
    server_name  example.com;

    # ...
}
server {
    listen       443 ssl;
    server_name  anotherexample.com;

    # ...
}

Ваша конфигурация должна выглядеть так:

server {
    listen 443 ssl default_server;
    server_name _;

    ssl_certificate /path/to/$ssl_server_name.crt;
    ssl_certificate_key /path/to/$ssl_server_name.key;

    return 301 https://www.$host$request_uri;
}

У вас должны быть файлы сертификатов с именами, соответствующими вашим доменам. Если ваш домен example.com, тебе нужно иметь example.com.crt и example.com.key.

Кроме того, вам нужно убедиться, что это единственный default_server блок для порта 443.