https: // домен .com с перенаправлением на https: // www - PullRequest
0 голосов
/ 05 июля 2019

Мой конфиг nginx в основном работает с https, все перенаправления с http на https работают, кроме https://example.com, для которого требуется перенаправление на https://www.example.com Может кто-нибудь сказать мне, где я иду не так?

Я пытался добавить перенаправление в блоке сервера, прослушивая 443 для example.com, чтобы перенаправить на www.example.com, но у меня была та же проблема.

server {
    server_name www.example.com;
    index index.php index.html index.htm;
    root /var/www/qc/public;

    error_log  /var/www/qc/error.log debug;
    access_log /var/www/qc/access.log;

    location / {
        include /etc/nginx/mime.types;
        index index.php;
        try_files $uri $uri/ /index.php?$query_string;
    }

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

    listen 443 ssl; # managed by Certbot

    location /phpmyadmin {
        root /usr/share/;
        index index.php index.html index.htm;
        location ~ ^/phpmyadmin/(.+\.php)$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        }
        location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt$
            root /usr/share/;
        }
    }

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # m$
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; #$
}
server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

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

server {
    server_name www.example.com example.com;
    return 301 https://www.example.com$request_uri;
    listen 80;
    return 404; # managed by Certbot
}

Я быкак URL https://example.com для перенаправления на https://www.example.com

1 Ответ

0 голосов
/ 05 июля 2019

В вашей скобке example.com вам не нужно выражение "if ($ host = example.com) {" так как вы уже разграничиваете хосты, которые вводят эту скобку, устанавливая "имя_сервера example.com;" , Также, когда вы перенаправляете на https://$host$request_uri;, вы перенаправляете на example.com, а не на www.example.com, создавая бесконечный цикл перенаправлений.

Хмель, это помогает, это конфигурация example.com, которая должна работать:

server {

 location / {

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

    server_name example.com;
    return 404; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # m$
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; #$
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...