nginx перенаправляет всех не-WWW на HTTPS WWW - PullRequest
0 голосов
/ 03 октября 2018
Here is what happens:
example.com -> https://example.com
http://example.com -> https://example.com
www.example.com ->  -> https://www.example.com

This is what I want:
example.com -> https://www.example.com
http://example.com -> https://www.example.com
www.example.com ->  -> https://www.example.com

Чего мне не хватает в моей конфигурации Nginx?Я не могу узнать из всех аналогично заданных вопросов.В некоторых ответах говорится, что нужно использовать оператор «если», но в Nginx doc говорится, что не следует этого делать, поскольку он будет применяться ко ВСЕМ запросам.

server {
    listen 80;
    listen 443; # add this line
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}
server {
        listen 80;
        root /var/www/html;
        index index.php;
        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

1 Ответ

0 голосов
/ 03 октября 2018

Удалите example.com в server_name второго блока и добавьте listen 443 во второй блок.

Надеюсь, это поможет.

server {
    listen 80;
    listen 443; # add this line
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 80;
    listen 443; # add this line too.
    root /var/www/html;
    index index.php;

    # Remove example.com
    server_name www.example.com;

    location / {
            try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    location ~ /\.ht {
            deny all;
    }
}
...