Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


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




}

 

 

Edited by magneto2010
Link to post
Share on other sites

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;
	}
	...

 

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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;
    }

 

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

Помогите пожалуйста, кто шарит

Надо чтобы всегда перекидывало на https://www.site.ru?

Link to post
Share on other sites

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; }

 

Link to post
Share on other sites

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 написать

Edited by i3bepb
не дописал
  • +1 1
Link to post
Share on other sites

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

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

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

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

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.