Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 46

Тема: Редирект с http на https, .htaccess, циклическая переадресация

  1. #1

    По умолчанию Редирект с http на https, .htaccess, циклическая переадресация

    Доброго времени суток!

    Еще в 4 версии панели ISP Manager была проблема с циклической переадресацией: если клиент хотел, чтобы его сайт открывался исключительно по 443 порту (https), он не мог добиться этого без помощи тех. поддержки хостинга, а тех. поддержка хостинга в свою очередь не могла добиться этого, не прибегая к ручному изменению конфига nginx.

    Всё это было, на сколько я помню из-за того, что ISP Manager 4 изначально создаёт только 1 секцию server для домена, поэтому, такой код в .htaccess:
    Код:
    RewriteCond %{SERVER_PORT} ^80$ [OR]
    RewriteCond %{HTTP} =on
    RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
    Приводил к циклической переадресации. Еще давно я создавал подобную тему, где спрашивал об этом: http://forum.ispsystem.com/ru/showthread.php?t=25021

    Был ответ:
    В 4 версии server в конфиге nginx для домена создается один для 443 и 80 порта. Поэтому редирект "зацикливается".
    В пятой версии панели проблема решена.
    Но как видно, проблема всё еще существует?
    Или я что-то делаю не так? Если да, то что нужно переделать?

    Вообще, было бы неплохо сделать обычную галочку в разделе редактирования WWW-домена - "Использовать только протокол https", ну или вроде того. Если галочка поставлена, то панель сама подправит конфиг как надо, сделает редирект и домен будет работать всегда на 443 порту. Не все пользователи смогут разобраться в правилах .htaccess, для них удобнее обычная галочка.

  2. #2
    Member Аватар для kysil
    Регистрация
    14.01.2015
    Адрес
    UA, AA
    Сообщений
    44

    По умолчанию

    Правильное правило от Google у меня не приводит к циклическим переадресациям:

    Options +FollowSymlinks
    RewriteEngine on
    RewriteBase /

    RewriteCond %{SERVER_PORT} !^443$

    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://site.tld/$1 [R=301,L]

  3. #3

    По умолчанию

    kysil, спасибо за ответ!
    Однако, у меня и с Вашими правилами происходит циклическая переадресация.

    Забыл указать, что сейчас у меня ISP Manager 5 Business на Debian 7 x86_64

  4. #4
    Support team Аватар для Fly
    Регистрация
    14.08.2010
    Сообщений
    4,764

    По умолчанию

    Значит что-то не так сделали, раз циклическая переадресация. Смотрите файл конфигурации apache и nginx (если используется).
    Последний раз редактировалось Fly; 16.02.2015 в 16:40.

  5. #5

    По умолчанию

    Вроде-бы ничего особенного нету в конфигах. Прикладываю их

    Nginx:
    PHP код:
    #user 'user10' virtual host 'example.com' configuration file
    server {
        
    server_name example.com www.example.com;
        
    charset off;
        
    disable_symlinks if_not_owner from=$root_path;
        
    index index.html index.php;
        
    root $root_path;
        
    set $root_path /var/www/user10/data/www/example.com;
        
    ssi on;
        
    access_log /var/www/httpd-logs/example.com.access.log ;
        
    error_log /var/www/httpd-logs/example.com.error.log notice;
        include /
    etc/nginx/vhosts-includes/*.conf;
        include /etc/nginx/vhosts-resources/user10/*.conf;
        location / {
            location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                try_files $uri $uri/ @fallback;
            }
            location / {
                try_files /does_not_exists @fallback;
            }
            location ~ [^/]\.ph(p\d*|tml)$ {
                try_files /does_not_exists @fallback;
            }
        }
        location @fallback {
            error_log /dev/null crit;
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect http://127.0.0.1:8080 /;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Secret 123123;
        }
        listen 77.77.77.77:80;
    }
    server {
        server_name example.com www.example.com;
        charset off;
        disable_symlinks if_not_owner from=$root_path;
        index index.html index.php;
        root $root_path;
        set $root_path /var/www/user10/data/www/example.com;
        ssi on;
        access_log /var/www/httpd-logs/example.com.access.log ;
        error_log /var/www/httpd-logs/example.com.error.log notice;
        include /etc/nginx/vhosts-includes/*.conf;
        include /etc/nginx/vhosts-resources/user10/*.conf;
        location / {
            location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                try_files $uri $uri/ @fallback;
            }
            location / {
                try_files /does_not_exists @fallback;
            }
            location ~ [^/]\.ph(p\d*|tml)$ {
                try_files /does_not_exists @fallback;
            }
        }
        location @fallback {
            error_log /dev/null crit;
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect http://127.0.0.1:8080 /;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Secret 123123;
        }
        listen 77.77.77.77:443;
        ssl on;
        ssl_certificate /var/www/httpd-cert/user10/example.com.crt;
        ssl_certificate_key /var/www/httpd-cert/user10/example.com.key;

    Apache:
    PHP код:
    #user 'user10' virtual host 'example.com' configuration file
    <VirtualHost 127.0.0.1:8080>
        
    ServerName example.com
        
    include /etc/apache2/vhosts-resources/user10/vhost.conf
        
    include /etc/apache2/vhosts-resources/user10/php5_module.conf
        CustomLog 
    /var/www/httpd-logs/example.com.access.log combined
        ErrorLog 
    /var/www/httpd-logs/example.com.error.log
        AddDefaultCharset off
        AssignUserID user10 user10
        DirectoryIndex index
    .html index.php
        DocumentRoot 
    /var/www/user10/data/www/example.com
        ServerAdmin webmaster
    @example.com
        ServerAlias www
    .example.com
        ScriptAlias 
    /cgi-bin/ /var/www/user10/data/www/example.com/cgi-bin/
        <
    FilesMatch "\.ph(p[3-5]?|tml)$">
            
    SetHandler application/x-httpd-php
        
    </FilesMatch>
        <
    FilesMatch "\.phps$">
            
    SetHandler application/x-httpd-php-source
        
    </FilesMatch>
        
    php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@example.com"
        
    php_admin_value upload_tmp_dir "/var/www/user10/data/mod-tmp"
        
    php_admin_value session.save_path "/var/www/user10/data/mod-tmp"
        
    php_admin_value open_basedir "/var/www/user10/data:."
    </VirtualHost>
    <
    Directory /var/www/user10/data/www/example.com>
        
    Options +ExecCGI
        php_admin_flag engine on
    </Directory

  6. #6
    Support team Аватар для Fly
    Регистрация
    14.08.2010
    Сообщений
    4,764

    По умолчанию

    Конечно будет зацикливаться. Вот смотрите, что получается по вашему конфигу:

    приходит запрос на 80 порт, согласно правилась в nginx, он проксируется на apache на 8080 порт. Дальше срабатывает ваш редирект, который перекидывает на 443 порт.
    Приходим опять к nginx, но уже по 443 порту, согласно конфигу проксируем запрос на apache на 8080 порт... и опять по кругу..

    Настройте редирект в nginx , а не в apache.

  7. #7

    По умолчанию

    Fly, но это ведь опять получается, что пользователь не может сам настроить себе редирект...

  8. #8
    Support team Аватар для Fly
    Регистрация
    14.08.2010
    Сообщений
    4,764

    По умолчанию

    А через панель? В разделе "www домены" есть кнопка "Редиректы". В ISPmanager 5 в nginx нормально прописывается редирект.

  9. #9

    По умолчанию

    Так там ведь можно создать только редирект с определенной страницы (указать путь), но поставить условие, что если порт 80, то редиректить на 443, вроде-бы нельзя. Или я ошибаюсь?

  10. #10
    Support team Аватар для Fly
    Регистрация
    14.08.2010
    Сообщений
    4,764

    По умолчанию

    Там можно простой редирект сделать, например

    Код 301 - Moved Permanently
    Путь /
    URL https://domain.com


    В конфиг nginx пропишется тогда rewrite ^/(.*)$ https://domain.com permanent;

    Соглашусь, что это не самый лучший вариант.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •