Page 1 of 1

HTTPS берет другой сайт

Posted: Sat May 07, 2016 5:45 pm
by bkr
Привет и спасибо за хорошую панель. Столкнулся с проблемой: добавил сайт, включил у него SSL, добавил валидный сертификат, все как надо.
Но в поиске выходят домены от другого сайта. И еще если заходить на другие домены, у которых нет SSL, то они выводят один сайт (другой, который расположен на этом же сервере)

я нашел похожую проблему, но не вижу решения.
viewtopic.php?t=9091

Кто сталкивался и как решить, подскажите плиз.

Re: HTTPS берет другой сайт

Posted: Sun May 08, 2016 4:33 pm
by Mr.Erbutw
bkr wrote: Но в поиске выходят домены от другого сайта.
а зачем вы в поиске ищите, О_о свой сайт.
И еще если заходить на другие домены, у которых нет SSL, то они выводят один сайт (другой, который расположен на этом же сервере)
- Кто они, и куда выводят ?
я нашел похожую проблему, но не вижу решения.
viewtopic.php?t=9091

можно пересоздать web , а логи что нибудь пишут ?

Re: HTTPS берет другой сайт

Posted: Tue May 10, 2016 11:13 am
by nabbe
В веб панели у вас должен быть подключен дефолтный пустой юзер (обычно admin) с доменом, который является именем сервера или его ptr. Больше у этого пользователя не должно быть сайтов. У него сгенерируйте ssl сертификат через веб панель. Проверьте, чтобы этот домен корректно открывался по https. После этого зайдите сюда:

Code: Select all

sudo nano /etc/httpd/conf.d/vesta.conf
там вы увидите примерно следующее:

Code: Select all

include /home/admin/conf/web/httpd.conf
Include /home/user/conf/web/httpd.conf
Include /home/user/conf/web/shttpd.conf
Include /home/admin/conf/web/shttpd.conf <-----
Как видно выше, shttp конфиг файл подключился последним, его нужно физически поднять, выше всех остальным shttpd конфигов, чтобы получилось вот так:

Code: Select all

include /home/admin/conf/web/httpd.conf
Include /home/user/conf/web/httpd.conf
Include /home/admin/conf/web/shttpd.conf <-----
Include /home/user/conf/web/shttpd.conf
Теперь если вы зайдете на сайт у которого нет ssl сертификата, то сервер отдаст первый в списке домен, тоесть нашу свежую заглушку. Далее нужно сделать 301 редирект на этой заглушке, чтобы автоматом возвращало на http домен, и не было зеркал.

Для этого создаем .htaccess файл в корне со следующим содержанием

Code: Select all

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Re: HTTPS берет другой сайт

Posted: Tue May 10, 2016 1:32 pm
by skurudo
Я бы предложил такой вариант.

Редактируем /etc/nginx/conf.d/your-ip.conf

Code: Select all

server {
    listen       your-ip:80 default;
    server_name  _;
        access_log /dev/null;
        error_log /dev/null;
        return 444;
}

server {
    listen      your-ip:443;
    server_name _;
    ssl         on;
    ssl_certificate      /home/admin/conf/web/ssl.your-domain.ru.pem;
    ssl_certificate_key  /home/admin/conf/web/ssl.your-domain.ru.key;
        access_log /dev/null;
        error_log /dev/null;
  return 444;
}

Re: HTTPS берет другой сайт

Posted: Tue May 10, 2016 1:46 pm
by skurudo
bkr wrote:Привет и спасибо за хорошую панель. Столкнулся с проблемой: добавил сайт, включил у него SSL, добавил валидный сертификат, все как надо.Но в поиске выходят домены от другого сайта. И еще если заходить на другие домены, у которых нет SSL, то они выводят один сайт (другой, который расположен на этом же сервере)
Дело в том, что у вас все домены висят на одном IP-адресе и одном порту, отсюда и такие сложности.
Решать стоит на уровне nginx, как мне думается.

Re: HTTPS берет другой сайт

Posted: Fri May 20, 2016 12:30 pm
by shpion4ik
nabbe wrote:В веб панели у вас должен быть подключен дефолтный пустой юзер (обычно admin) с доменом, который является именем сервера или его ptr. Больше у этого пользователя не должно быть сайтов. У него сгенерируйте ssl сертификат через веб панель. Проверьте, чтобы этот домен корректно открывался по https. После этого зайдите сюда:

Code: Select all

sudo nano /etc/httpd/conf.d/vesta.conf
там вы увидите примерно следующее:

Code: Select all

include /home/admin/conf/web/httpd.conf
Include /home/user/conf/web/httpd.conf
Include /home/user/conf/web/shttpd.conf
Include /home/admin/conf/web/shttpd.conf <-----
Как видно выше, shttp конфиг файл подключился последним, его нужно физически поднять, выше всех остальным shttpd конфигов, чтобы получилось вот так:

Code: Select all

include /home/admin/conf/web/httpd.conf
Include /home/user/conf/web/httpd.conf
Include /home/admin/conf/web/shttpd.conf <-----
Include /home/user/conf/web/shttpd.conf
Теперь если вы зайдете на сайт у которого нет ssl сертификата, то сервер отдаст первый в списке домен, тоесть нашу свежую заглушку. Далее нужно сделать 301 редирект на этой заглушке, чтобы автоматом возвращало на http домен, и не было зеркал.

Для этого создаем .htaccess файл в корне со следующим содержанием

Code: Select all

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Спасибо! твое решение сработало!

Re: HTTPS берет другой сайт

Posted: Fri May 20, 2016 12:43 pm
by skurudo
Ок, тогда закрываем как решенное.