Общий способ перенаправить весь трафик https без www на 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;

    # ...
}
0
задан 3 July 2020 в 05:04
1 ответ

Ваша конфигурация должна выглядеть следующим образом:

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.

1
ответ дан 3 July 2020 в 06:29

Теги

Похожие вопросы