Nginx редирект не работает при перенаправлении всех дел на https и не www - PullRequest
0 голосов
/ 20 апреля 2020

Я нашел ответ здесь, но все еще могу заставить его работать, я хочу то же самое, что и он:

https://example.com
https://www.example.com
http://example.com
http://www.example.com
example.com
www.example.com

to all redirect to `https://example.com`

вот мой конфигурационный файл

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

server {
    listen 443 ssl;
    server_name example.com;

    # listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = example.com) {
        return 301 https://example.com$request_uri;
    }

    server_name example.com;
    listen 80;
    listen 443 ssl;
    return 404; # managed by Certbot
}

все перенаправления верны, кроме "https://www.example.com", он вообще не перенаправляет.

Где я ошибся? Пожалуйста, помогите!

1 Ответ

0 голосов
/ 23 апреля 2020

Ваша сгенерированная конфигурация cerbot выглядит странно. Как уже упоминалось в комментарии. Проверьте sudo nginx -t, чтобы увидеть, есть ли какие-либо предупреждения.

Чтобы перенаправить клиентский запрос, отправленный на https://www.example.com, вам нужен серверный блог, соответствующий www.example.com liste 443 ssl. Пожалуйста, убедитесь, что у вас есть сертификаты, включая www.example.com как CN!

В этом блоге сервера вы можете создать перенаправление с return 301 https://example.com$reuest_uri

Certbot должен! сгенерируйте правильную конфигурацию для ssl, если ваша конфигурация для порта 80 (не-ssl) верна.

server {
server_name example.com;
listen 80;

...
}

server {
server_name www.example.com;
listen 80;

return 301 $scheme://example.com$request_uri;

...
}

Это должно сгенерировать правильную конфигурацию ssl с помощью плагина nginx certbot.

...