Редирект с www на без www cerbot

Snapius
На сайте с 29.10.2007
Offline
241
751

Здравствуйте, помогите пожалуйста, что только не делал, не получается перекинуть в https с www на без www, ssl cerbot. Сайт работает без апач, на nginx.

Конфиг nginx:


server {
if ($host = www.test.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
server_name www.test.ru;
location /robots.txt {
root /home/deploy/projects/test/current/public;
rewrite ^ /robots.txt break;
}


}

server {
server_name test.ru www.test.ru;
root /home/deploy/projects/test/current/public;
rewrite ^/(.*)/$ /$1 permanent;
passenger_enabled on;
rails_env production;
port_in_redirect off;
auth_basic "Restricted";
expires 2w;
add_header Cache-Control private;
#auth_basic_user_file /etc/nginx/.htpasswd_test;
#client_max_body_size 1000m;
rewrite ^/catalog/(.*)(\s|%20)(.*)$ /catalog/$1$3 break;
if (!-f $document_root/$uri) {
rewrite ^/index.html / permanent;
rewrite ^/index.php / permanent;
}
location /cable {
passenger_app_group_name test_action_cable;
passenger_force_max_concurrent_requests_per_process 0;
}
location /admin {
expires off;
add_header Cache-Control no-cache;
}
location ~ ^/assets/ {
expires 1y;
add_header Cache-Control public;
gzip_static on;
add_header ETag "";
break;
}
location ~ ^/phpmyadmin {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8090$1;
}
location ~ ^/zabbix{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8090$1;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/test.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/test.ru/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{
listen 80;
server_name shop.test.ru;
port_in_redirect off;
index index.html;
#rewrite ^/index(.php|.html)? / permanent;
#rewrite ^(/.+)\.(php|html)$ $1 permanent;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080$1;
}
}


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


listen 80;
server_name test.ru;
return 404; # managed by Certbot


}

Заранее большое спасибо за помощь.

Греческая натуральная косметика (https://www.rizescrete.ru)
B
На сайте с 13.10.2007
Offline
142
#1

У меня так прописано


server {
listen 80;
server_name www.domain.ru domain.ru;

# redirects both www and non-www to https
return 301 https://domain.ru$request_uri;
}

server {
listen 443 ssl;

ssl_certificate /etc/letsencrypt/live/domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.ru/privkey.pem;

root /home/vm/www/domain.ru;
index index.php index.html;
server_name domain.ru www.domain.ru;

.....
}

Snapius
На сайте с 29.10.2007
Offline
241
#2
Berega:
У меня так прописано

server {
listen 80;
server_name www.domain.ru domain.ru;

# redirects both www and non-www to https
return 301 https://domain.ru$request_uri;
}

server {
listen 443 ssl;

ssl_certificate /etc/letsencrypt/live/domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.ru/privkey.pem;

root /home/vm/www/domain.ru;
index index.php index.html;
server_name domain.ru www.domain.ru;

.....
}

Привел в вид как у Вас, все равно не работает, при проверке https://www.test.ru ответа выдает 200 код, а должен 301 редирект на https://test.ru :(

M
На сайте с 17.09.2016
Offline
124
#3

У Вас редиректы прописаны в секции listen 80

Это http

Пропишите и в listen 443;

Snapius
На сайте с 29.10.2007
Offline
241
#4
Mobiaaa:
У Вас редиректы прописаны в секции listen 80
Это http
Пропишите и в listen 443;

Если добавляю в секцию 443 - return 301 https://test.ru$request_uri;, тогда постоянный редирект и сайт не грузится вообще.

B
На сайте с 13.10.2007
Offline
142
#5
Snapius:
Если добавляю в секцию 443 - return 301 https://test.ru$request_uri;, тогда постоянный редирект и сайт не грузится вообще.

по идее нужно добавить три секции, две с редиректом и третья основная

server {

server_name www.example.com example.com;

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

}

server {

listen 443 ssl;

ssl_certificate /path/to/server.cert;

ssl_certificate_key /path/to/server.key;

server_name www.example.com;

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

}

server {

listen 443 ssl;

ssl_certificate /path/to/server.cert;

ssl_certificate_key /path/to/server.key;

server_name example.com;

........

}

Snapius
На сайте с 29.10.2007
Offline
241
#6
Berega:
по идее нужно добавить три секции, две с редиректом и третья основная

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

server {
listen 443 ssl;
ssl_certificate /path/to/server.cert;
ssl_certificate_key /path/to/server.key;
server_name www.example.com;
return 301 https://example.com$request_uri;
}

server {
listen 443 ssl;
ssl_certificate /path/to/server.cert;
ssl_certificate_key /path/to/server.key;
server_name example.com;

........
}

Супер, огромное спасибо, заработало как нужно.

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