Почему не редиректит с https://www.site.ru nginx?

12
RV
На сайте с 02.09.2016
Offline
7
1028

Заметил что поисковик схавал https://www.site.ru и офигел проста ), должно быть https://site.ru

Конфиг:


server {
listen 80;
server_name site.ru www.site.ru;
rewrite ^(.*) https://$server_name$1 permanent;
}

server {
listen 443 ssl;
server_name www.site.ru site.ru;
ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;

access_log /var/www/site.ru/logs/nginx-access.log;
error_log /var/www/site.ru/logs/nginx-error.log;

location / {
proxy_pass http://127.0.0.1:81;
include /etc/nginx/proxy.conf;
}

location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /var/www/site.ru/public;
access_log off;
expires 10d;
}

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
proxy_pass http://127.0.0.1:81;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

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

location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}

}
MU
На сайте с 01.10.2013
Offline
43
#1

Судя по конфигу, он и не должен редиректить. У вас редирект только с http на https. Так что всё правильно.

Чтобы сделать редирект нужно добавить отдельную секцию server в конфиге для www.site.ru и для site.ru

server {

server_name www.site.ru; # <- NB: здесь нет site.ru без 'www'

return 301 $scheme://site.ru$request_uri;

}

А в остальных секциях убрать www.site.ru из server_name

Хостинг на SSD от 49 руб./мес. (http://mne.ru/services/virt_hosting.shtml) + бесплатный SSL VPS/VDS на SSD в России от 75 руб./мес. (http://mne.ru/services/vps.shtml) Скидка 10% на хостинг и VPS по промокоду — SEARCHENGINES
RV
На сайте с 02.09.2016
Offline
7
#2
MNERU:
Судя по конфигу, он и не должен редиректить. У вас редирект только с http на https. Так что всё правильно.

Чтобы сделать редирект нужно добавить отдельную секцию server в конфиге для www.site.ru и для site.ru
server {
server_name www.site.ru; # <- NB: здесь нет site.ru без 'www'
return 301 $scheme://site.ru$request_uri;
}


А в остальных секциях убрать www.site.ru из server_name

можно показать на примере моего конфига, как все это должно выглядеть? если не трудно конеш )

MU
На сайте с 01.10.2013
Offline
43
#3

server {

listen 80;
listen 443 ssl;
server_name www.site.ru; # здесь нет без "www"
ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;
return 301 https://site.ru$request_uri;
}
server {
listen 80;
server_name site.ru;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name site.ru; # а здесь нет с "www"
ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;

access_log /var/www/site.ru/logs/nginx-access.log;
error_log /var/www/site.ru/logs/nginx-error.log;

location / {
proxy_pass http://127.0.0.1:81;
include /etc/nginx/proxy.conf;
}

location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /var/www/site.ru/public;
access_log off;
expires 10d;
}

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
proxy_pass http://127.0.0.1:81;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

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

location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}

}
RV
На сайте с 02.09.2016
Offline
7
#4
MNERU:
server {

listen 80;
listen 443 ssl;
server_name www.site.ru; # здесь нет без "www"
ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;
return 301 https://site.ru$request_uri;
}
server {
listen 80;
server_name site.ru;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name site.ru; # а здесь нет с "www"
ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;

access_log /var/www/site.ru/logs/nginx-access.log;
error_log /var/www/site.ru/logs/nginx-error.log;

location / {
proxy_pass http://127.0.0.1:81;
include /etc/nginx/proxy.conf;
}

location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /var/www/site.ru/public;
access_log off;
expires 10d;
}

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
proxy_pass http://127.0.0.1:81;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

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

location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}

}

что т не нравится мне такой конфиг )

Den73
На сайте с 26.06.2010
Offline
523
#5

if ($host ~* ^www\.(.*)$) {
rewrite / $scheme://$1 permanent;
}

зы для яндекса нужно указать Host в robots

LM
На сайте с 18.10.2009
Offline
117
#6

Потому что не

rewrite  ^(.*) https://$server_name$1 permanent;

А так:

rewrite ^ https://site.ru$request_uri permanent;
RV
На сайте с 02.09.2016
Offline
7
#7
MNERU:
server {

спс, выручили :)

RV
На сайте с 02.09.2016
Offline
7
#8
MNERU:


server {
listen 80;
server_name site.ru;
rewrite ^(.*) https://$server_name$1 permanent;
}

а сюда надо добавлять www.site.ru ? пишут что могут не попадать запросы на www.site.ru

AGHost
На сайте с 16.11.2011
Offline
115
#9

Зачем такая куча блоков для одного сайта, если можно сделать все в одном?

server {

listen 80;

listen [::]:80 ipv6only=on;

listen 443 ssl;

listen [::]:443 ipv6only=on ssl;

server_name domain.ru www.domain.ru;

#ssl on; <- важно убрать это

ssl_certificate ...

ssl_certificate_key ..

location / {

if ($ssl_protocol = "") {

rewrite ^/(.*) https://$server_name/$1 permanent;

}

if ($http_host ~* ^www\.(.*)$) {

rewrite ^/(.*) $scheme://$server_name/$1 permanent;

}

...

}

}

8 лет на рынке услуг хостинга - https://agho.st (https://agho.st)
RV
На сайте с 02.09.2016
Offline
7
#10
AGHost:
Зачем такая куча блоков для одного сайта, если можно сделать все в одном?

server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
server_name domain.ru www.domain.ru;

#ssl on; <- важно убрать это
ssl_certificate ...
ssl_certificate_key ..

location / {
if ($http_host ~* ^www\.(.*)$) {
return 301 $scheme://$1$request_uri;
}
...
}

}

а как все это будет выглядеть в конфиге, если не трудно? :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий