nginx https, редирект на с сайта где нет https.

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

nginx https, редирект на с сайта где нет https.

Сообщение Voler »

Добрый день.

Есть сервер где настроена связка nginx + php 7. После конфигурирования обратил внимание, что есть site.ru где есть http и https, а есть пару сайтов без https site.com, site.ua. Так вот если открыть site.com или site.ua то происходит редирект на https://site.ru и как следствие ошибка сертификата.

Подскажите где ошибся пример конфига

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

....

server {
listen 443 ssl;
server_name siteru www.site.ru;
keepalive_timeout 75 75;

.......
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nginx https, редирект на с сайта где нет https.

Сообщение Bizdelnick »

Voler писал(а): если открыть site.com или site.ua то происходит редирект
Если открыть по https, или по http тоже? Если по https, то лечится только настройкой https для всех сайтов или разнесением их по разным IP-адресам.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

Re: nginx https, редирект на с сайта где нет https.

Сообщение Voler »

На Apache такой проблемы не было неприятный сюрприз, если у другого сайта есть серт то все норм.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nginx https, редирект на с сайта где нет https.

Сообщение Bizdelnick »

Не, это я невнимательно прочитал. Не должно такого быть. Показывайте полные конфиги.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: nginx https, редирект на с сайта где нет https.

Сообщение SLEDopit »

Как у вас схема редиректа устроена? http://site.comhttps://site.comhttps://site.ru или http://site.comhttps://site.ru?
Если запустить wget -O /dev/null http://site.com, какую показывает цепочку редиректов?
У вас случайно не был настроен раньше https://site.com с HSTS, который вы отключили и оставили только редирект http://site.comhttps://site.ru?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

Re: nginx https, редирект на с сайта где нет https.

Сообщение Voler »

Вот конфиг сайта на который попадаю если набиру другой сайт с https, а по факту там его нет.
Spoiler

Код: Выделить всё

server {
	#Слушаем порт 80
	listen 80;
	#listen [::]:80;
	
	# Название сайта
	server_name site.ru www.site.ru;
	
    #Редирект на https
	rewrite ^/(.*)$	https://$host/$1 permanent;
	
	#Логирование
	access_log /var/log/nginx/site.ru.log;
    error_log /var/log/nginx/site.ru.error.log error;
	root /var/www/site.ru;
    
    proxy_set_header    Host              $host;
    proxy_set_header    X-Real-IP         $remote_addr;
    proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for; 
    
	index index.php index.html;
	
	# Включить gzip-сжатие на выходе бэкенда. В кэш пойдут уже сжатые версии файлов. 
	# Здесь происходит сжатие на 9 уровне компрессии. Обратите внимание, среди типов отсутствует text/plain, 
	# его мы сжимаем во фронтенде на 1 уровне компрессии, чтобы избежать высокой степени загрузки CPU при отдаче динамических данных
    #gzip                on;
    #gzip_comp_level     9;
    #gzip_min_length     512;
    #gzip_buffers        8 64k;
    #gzip_types text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
    #gzip_proxied        any;

    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires max;
    }    

#ЧПУ
   location / {
   try_files   $uri @second_check;
   }

   location @second_check {
   try_files   $uri/index.php @bitrix;
   fastcgi_pass   127.0.0.1:9002;
   fastcgi_param SCRIPT_FILENAME $document_root$uri;
   include fastcgi_params;
   }

   location ~ \.php$ {
   try_files   $uri @bitrix;
   fastcgi_pass   127.0.0.1:9002;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
    }
   
    location @bitrix {
   fastcgi_pass   127.0.0.1:9002;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
    }   
}

server {
        listen 443 ssl;
	server_name site.ru www.site.ru;
	keepalive_timeout 75 75;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:50m;
        ssl_session_timeout 1d;
        ssl_certificate /etc/nginx/anosin/www_site_ru.crt;
        ssl_certificate_key /etc/nginx/anosin/5571700.key;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        add_header Strict-Transport-Security 'max-age=31536000';
#        ssl_stapling on;
#        ssl_stapling_verify on;
	charset off;
	gzip on;
	gzip_comp_level 5;
	gzip_types application/x-javascript application/javascript text/css;
	index index.php index.html
	
    access_log /var/log/nginx/site.ssl.ru.log;
    error_log /var/log/nginx/site.ssl.ru.error.log error;
	
	root /var/www/site.ru;
	
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header Host $host;
	
    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires max;
    }   
	#ЧПУ
   location / {
   try_files   $uri @second_check;
   }

   location @second_check {
   try_files   $uri/index.php @bitrix;
   fastcgi_pass   127.0.0.1:9002;
   fastcgi_param SCRIPT_FILENAME $document_root$uri;
   include fastcgi_params;
   }

   location ~ \.php$ {
   try_files   $uri @bitrix;
   fastcgi_pass   127.0.0.1:9002;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
    }
	
	location = /favicon.ico {
	log_not_found off;
	access_log off;
    }
   
    location @bitrix {
   fastcgi_pass   127.0.0.1:9002;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
    }   

	}
Вот конфиг сайта, который не имеет https, но ссылается на первый
Spoiler

Код: Выделить всё

server {
	listen 80;
	#listen [::]:80;
    
	server_name site2.ru www.site2.ru;
	
	access_log /var/log/nginx/site2.ru.log;
    error_log /var/log/nginx/site2.ru.error.log error;
	root /var/www/site2.ru;

	# Add index.php to the list if you are using PHP
	index index.php index.html index.htm index.nginx-debian.html;
	
	# Включить gzip-сжатие на выходе бэкенда. В кэш пойдут уже сжатые версии файлов. 
	# Здесь происходит сжатие на 9 уровне компрессии. Обратите внимание, среди типов отсутствует text/plain, 
	# его мы сжимаем во фронтенде на 1 уровне компрессии, чтобы избежать высокой степени загрузки CPU при отдаче динамических данных
    gzip                on;
    gzip_comp_level     9;
    gzip_min_length     512;
    gzip_buffers        8 64k;
    gzip_types text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
    gzip_proxied        any;

    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires max;
    }    


	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		# try_files $uri $uri/ =404;
       try_files $uri $uri/ /index.php?$args;
	}

	   # Запрет на доступ к загруженным скриптам
    location ~* /(?:uploads|files)/.*\.php$ {
       deny all;
    }

    location ~* ^/(\.htaccess|xmlrpc\.php)$ {
    return 404;
    }	
	
    location /wp-admin/{
	allow 176.62.187.219;
	allow 176.62.187.187;
	allow 176.62.184.142;
	allow 91.192.20.1;
	deny all;
        }
	
	location /wp-admin/admin-ajax.php {
       allow all;
    }
	
	location /wp-login.php {
    allow 176.62.187.219;
	allow 176.62.187.187;
	allow 176.62.184.142;
	allow 91.192.20.1;
	deny all;
    }	
	
	location = /favicon.ico {
	log_not_found off;
	access_log off;
    }
	
	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	#
        location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass 127.0.0.1:9000;

		proxy_set_header    Host              $host;
        proxy_set_header    X-Real-IP         $remote_addr;
        proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;
	}
}
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: nginx https, редирект на с сайта где нет https.

Сообщение Bizdelnick »

Так, я совсем запутался. Меня сбила с толку фраза
Voler писал(а): если открыть site.com или site.ua то происходит редирект на https://site.ru
По факту-то редиректа нет, просто открывается содержимое site.ru с сертификатом от site.ru по URL https://site.com, так? Если так, мой первый ответ был правильный:
Bizdelnick писал(а): лечится только настройкой https для всех сайтов или разнесением их по разным IP-адресам.
Добиться работоспособности https://site.com (даже простого редиректа на http://site.com), не имея для него сертификата, в принципе невозможно. От веб-сервера это не зависит.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

Re: nginx https, редирект на с сайта где нет https.

Сообщение Voler »

спс, поднял второй ип
Спасибо сказали:
Ответить