Page 1 of 1

Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Fri Mar 30, 2018 4:54 pm
by Metallurg.IT
Как настроить редирект на HTTPS для сервера с PHP-FPM + Nginx.

1) Добавил домен
2) Получил на него SSL через панель для папки public_html
3) Пробовал кидать в нее html страницы и CMS, автоматически не открывается старница с https://

На CMS ModX - сайт получает httpS://, только при переходе по ссылкам сайта.

.htaccess - пробовал менять - не помогло.

БагТрекер - https://bugs.vestacp.com/issues/640

Re: Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Fri Mar 30, 2018 6:59 pm
by yariksat
Metallurg.IT wrote:
Fri Mar 30, 2018 4:54 pm
Как настроить редирект на HTTPS для сервера с PHP-FPM + Nginx.

1) Добавил домен
2) Получил на него SSL через панель для папки public_html
3) Пробовал кидать в нее html страницы и CMS, автоматически не открывается старница с https://

На CMS ModX - сайт получает httpS://, только при переходе по ссылкам сайта.

.htaccess - пробовал менять - не помогло.

БагТрекер - https://bugs.vestacp.com/issues/640
А причём здесь .htaccess?
.htaccess работает только с апачем.Можете уже выкинуть его.
Тут все правила пишутся в конфиг nginx.
У меня с коробочки на дефолтных конфигах практически всё работало.А остальное уже ручками.Писать лучше в инклюде а не прямо в конфиге никса иначе при ребилде веб конфиг затрет на дефолтный.Ну или в темлейтах сделать себе свой отдельный шаблон.Я себе шаблон делал,не люблю в инклюдах писать.

Re: Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Fri Mar 30, 2018 7:35 pm
by Metallurg.IT
yariksat wrote:
Fri Mar 30, 2018 6:59 pm
Metallurg.IT wrote:
Fri Mar 30, 2018 4:54 pm
Как настроить редирект на HTTPS для сервера с PHP-FPM + Nginx.

1) Добавил домен
2) Получил на него SSL через панель для папки public_html
3) Пробовал кидать в нее html страницы и CMS, автоматически не открывается старница с https://

На CMS ModX - сайт получает httpS://, только при переходе по ссылкам сайта.

.htaccess - пробовал менять - не помогло.

БагТрекер - https://bugs.vestacp.com/issues/640
А причём здесь .htaccess?
.htaccess работает только с апачем.Можете уже выкинуть его.
Тут все правила пишутся в конфиг nginx.
У меня с коробочки на дефолтных конфигах практически всё работало.А остальное уже ручками.Писать лучше в инклюде а не прямо в конфиге никса иначе при ребилде веб конфиг затрет на дефолтный.Ну или в темлейтах сделать себе свой отдельный шаблон.Я себе шаблон делал,не люблю в инклюдах писать.
Обычно и у меня все работало из коробки, но как собрал новый сервер все перестало(
Шаблон собственный хочу сделать, да пока ищу как и не знаю, будет ли в нем смысл вообще.

Re: Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Fri Mar 30, 2018 8:42 pm
by yariksat
Metallurg.IT wrote:
Fri Mar 30, 2018 7:35 pm
Обычно и у меня все работало из коробки, но как собрал новый сервер все перестало(
Шаблон собственный хочу сделать, да пока ищу как и не знаю, будет ли в нем смысл вообще.
Ну так я так понимаю что с PHP-FPM + Nginx Вы впервые столкнулись?
Ибо не знаете что .htaccess тут не работает совершенно,ибо он работает только с апачем.
Свой шаблон нужно делать в темплейтах.

Re: Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Sat Mar 31, 2018 7:41 am
by artscripts
редирект на https без www можно прописать так, в шаблоне nginx домена

Code: Select all

	if ($host ~* www\.(.*)) {
        set $host_without_www $1;
        rewrite ^(.*)$ https://$host_without_www$1 permanent;
    }

Re: Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Sat Mar 31, 2018 10:06 am
by Metallurg.IT
yariksat wrote:
Fri Mar 30, 2018 8:42 pm
Metallurg.IT wrote:
Fri Mar 30, 2018 7:35 pm
Обычно и у меня все работало из коробки, но как собрал новый сервер все перестало(
Шаблон собственный хочу сделать, да пока ищу как и не знаю, будет ли в нем смысл вообще.
Ну так я так понимаю что с PHP-FPM + Nginx Вы впервые столкнулись?
Ибо не знаете что .htaccess тут не работает совершенно,ибо он работает только с апачем.
Свой шаблон нужно делать в темплейтах.
Использую давно, а вот шаблоны подвели в первые и пришлось знакомиться.

Re: Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Sat Mar 31, 2018 10:43 am
by yariksat
Metallurg.IT wrote:
Sat Mar 31, 2018 10:06 am
Использую давно, а вот шаблоны подвели в первые и пришлось знакомиться.
Может быть меня ввело в заблуждение то что Вы не знаете что .htaccess на этой связке не работает....

Re: Редирект на HTTPS (PHP-FPM + Nginx)

Posted: Sat Mar 31, 2018 11:04 am
by Metallurg.IT
Итак.
Ночные изыскания привели к решению устраивающему меня на данный момент. Оно может являться костылем и не могу советовать его, а так же буду рад если внесете критику и правки.

Мой пример рассматривается на примере шаблона MODx - но куски кода аналогичны и для других шаблонов.
На данный момент у меня работает редирект на HTTPS://domain.ru при вводе domain.ru и www.domain.ru.
Я не понял до конца, есть ли работа с SSL портом, так что наверное у меня банально по домену редирект происходит.

Code: Select all

cd /usr/local/vesta/data/templates/web/nginx/php-fpm/
Копируем файл cp modx.tpl modx-https.tpl
Редактируем файл nano modx-https.tpl

Code: Select all

server {
    listen      %ip%:%web_port%;
    server_name %domain_idn% %alias_idn%;
    root        %docroot%;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/%domain%.log combined;
    access_log  /var/log/nginx/domains/%domain%.bytes bytes;
    error_log   /var/log/nginx/domains/%domain%.error.log error;

#################################################################################################

##  Если нет в адресной строке https:// то делает редирект на https://

        if ($scheme != "https") {
            return 301 https://%domain%$request_uri;
        }

##  Если в адресной строке есть www.domain.ru то делается редирект на https://domain.ru

        if ($host != "%domain%") {
            return 301 https://%domain%$request_uri;
        }

##  Исправляем ошибку MODX: Каталог ядра в открытом доступе

        location /core/ {
            deny all;
        }

#################################################################################################

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
#################### С ЭТОГО КУСКА " location = /favicon.ico {" ВСЕ НИЖЕ СТАНДАРТНО #################
Копируем файл cp modx.tpl modx-https.stpl
Редактируем файл nano modx-https.stpl

Code: Select all

server {
    listen      %ip%:%web_ssl_port%;
    server_name %domain_idn% %alias_idn%;
    root        %sdocroot%;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/%domain%.log combined;
    access_log  /var/log/nginx/domains/%domain%.bytes bytes;
    error_log   /var/log/nginx/domains/%domain%.error.log error;

    ssl         on;
    ssl_certificate      %ssl_pem%;
    ssl_certificate_key  %ssl_key%;

#################################################################################################

##  Исправляем ошибку MODX: Каталог ядра в открытом доступе

        location /core/ {
            deny all;
        }

#################################################################################################

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

#################### С ЭТОГО КУСКА " location = /favicon.ico {" ВСЕ НИЖЕ СТАНДАРТНО #################
Не забываем выбрать новый шаблон в редактировании домена и "Пересоздать WEB".!

P.S. В редакторе nano
Сохранить Ctrl+O потом Ctrl+X
Удалить всю строчку Ctrl+K

Жду критику и исправления.