Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Поделитесь файлом ***.nginx.conf с редиректами на https и на www


magneto2010

Recommended Posts

второй день не получается запустить нормально редиректы на https и на www

 

Сертбор прописал редирект на https, но не получается сделать редирект еще на www. Если добавить  www в этот редирект return 301 https://www.$host$request_uri; то он срабатывает когда пытаются перейти по http. Если убрать www с ссылки в браузере, то нормально открывается версия без www, чего не должно быть. Помогите пожалуйста, кто шарит. 

 

Спойлер

server {
    server_name site.ru www.site.ru;
    root        /home/admin/web/site.ru/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/site.ru.log combined;
    access_log  /var/log/nginx/domains/site.ru.bytes bytes;
    error_log   /var/log/nginx/domains/site.ru.error.log error;
    location / {
        try_files $uri $uri/ @opencart;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    127.0.0.1:9001;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }

    location @opencart {
        rewrite ^/(.+)$ /index.php?_route_=$1 last;
    }

    location /vstats/ {
        alias   /home/admin/web/site.ru/stats/;
        include /home/admin/conf/web/site.ru.auth*;
    }

    error_page  403 /error/404.html;
    error_page  404 /error/404.html;
    error_page  500 502 503 504 /error/50x.html;

    location /error/ {
        alias   /home/admin/web/site.ru/document_errors/;
    }

    location ~* "/\.(htaccess|htpasswd)$" {
        deny    all;
        return  404;
    }

    include     /etc/nginx/conf.d/phpmyadmin.inc*;
    include     /etc/nginx/conf.d/phppgadmin.inc*;
    include     /etc/nginx/conf.d/webmail.inc*;

    include     /home/admin/conf/web/nginx.site.ru.conf*;

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


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


    listen      46.30.42.143:80;
    server_name site.ru www.site.ru;
    return 404; # managed by Certbot




}

 

 

Змінено користувачем magneto2010
Надіслати
Поділитися на інших сайтах


site.nginx.conf

server {
	listen     xx.xx.xx.xx:80;
	...
	## redirect http to https ##
	return      301 https://$server_name$request_uri;
	...

site.ssl.nginx.conf

server {
	listen      xx.xx.xx.xx:443 ssl http2;
	...
	## redirect www to no www
	if ($host = 'www.sute.ru' ) {
		rewrite ^/(.*)$ https://sute.ru/$1 permanent;
	}
	...

 

Надіслати
Поділитися на інших сайтах

я тоже вчера гуглил это, спасибо. Я смотрел гугл и забугорний и ру. Почему-то у меня только 1 файл конфига, в котором вписаны и сертификаты. Ни разу не видел чтоб было 2 файла конфига.

Надіслати
Поділитися на інших сайтах


2 минуты назад, magneto2010 сказал:

я тоже вчера гуглил это

это я с сервера своего снял

Надіслати
Поділитися на інших сайтах

вот с второго сервера, там один конфиг:

server {
    listen      80;
    server_name site.ru;
    access_log off;
    error_log off;
    ## redirect http to https ##
    return      301 https://$server_name$request_uri;
}

## our http server at port 443
server {
    listen      443 ssl http2;
    listen [::]:443 ssl http2;
    server_name site.ru;

...

    ## redirect www to no www
    if ($host = 'www.site.ru' ) {
        rewrite ^/(.*)$ https://site.ru/$1 permanent;
    }

 

Надіслати
Поділитися на інших сайтах

17 минут назад, magneto2010 сказал:

Почему-то у меня только 1 файл конфига, в котором вписаны и сертификаты.

можете сделать два, вы их подключаете в nginx.conf:

include             /etc/nginx/conf.d/*.conf;

Надіслати
Поділитися на інших сайтах

23 минуты назад, ibond сказал:

вот с второго сервера, там один конфиг:

А если в server_name не указаны варианты с www, то они же вроде вообще не обрабатываются в этих правилах

24 минуты назад, ibond сказал:

server_name site.ru;

т.е. может ли вообще такая вот ситуация возникнуть?

25 минут назад, ibond сказал:

## redirect www to no www if ($host = 'www.site.ru' ) { rewrite ^/(.*)$ https://site.ru/$1 permanent; }

 

Надіслати
Поділитися на інших сайтах


1 минуту назад, magneto2010 сказал:

да, именно так.

 Вот получается 4 варианта:

http c www

http без

https c www

https без

 

Первые два случая во втором server у Вас, где слушается 80 порт:

server {
    listen      46.30.42.143:80;
    server_name site.ru www.site.ru;
    return 301 https://www.site.ru$request_uri;
}

Т.е. если пришел на 80 порт то явно по http и без разницы с www или без в любом случае надо на https://www.site.ru перебросить. Т.е. все эти if-ы лишние и только тормозят. Осталось еще два следующих случая обработать - https с www это наш рабочий вариант тут должен уже отработать сайт с ним все ясно. Остается еще вариант "https без", его обработку надо в первый server написать

Змінено користувачем i3bepb
не дописал
  • +1 1
Надіслати
Поділитися на інших сайтах


2 часа назад, i3bepb сказал:

т.е. может ли вообще такая вот ситуация возникнуть?

Я дал как пример, а думать уже самому ... Могу подсказать:

server_name domain.ru;
return 301 http://www.$host$request_uri;

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.