Как перенаправить на www, используя nginx, certbot и Symfony config?

Я хочу, чтобы все страницы моего сайта перенаправлялись на www.Я использую конфигурацию Symfony 4 по умолчанию для nginx, а также добавил certbot для управления сертификатами https.

server {
    server_name www.domain.com;
    root /var/www/domain.com/public;

    location / {
        # try to serve file directly, fallback to index.php
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }
    location ~ \.php$ {
        return 404;
    }

    error_log /var/log/nginx/domain.com_error.log;
    access_log /var/log/nginx/domain.com_access.log;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.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 = www.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name domain.com;
    listen 80;
    return 404; # managed by Certbot
}

В результате, однако, ничего не происходит. Я получаю HTTPS-соединения как на www, так и без www, но перенаправления нет. Что мне здесь не хватает?

0 ответов

Другие вопросы по тегам