Битрикс редирект с https на http: Карта сайта

Ошибка редиректа с https на http://$host:443

Ошибка неверного порта при отдельных переходах по страницам характерна не только для Виртуальной Машины, а и многих самостоятельных конфигураций с Nginx. Однако, данная ошибка присутствует во всех VM Bitrix на протяжении последних лет.

Как проявляется баг?

Самыми частыми симптомами появления проблемы являются появившиеся ошибки в отчетах поисковых краулеров Google и Яндекс. В один прекрасный день после перехода на https протокол в отчетах начинают попадаться ошибочные страницы с urlhttp://host.com:443/page или наоборот https://host.com:80/page

Простым взглядом на строки легко понять, что проблема кроется в том, что страница «находящаяся» на https пытается быть открытой по протоколу http или в «иную сторону».

Зачастую найти точки входа ботов на ошибочные страницы довольно сложно. Это могут быть результаты поиска, переход после авторизации, результаты форм и что угодно еще. Радует то, что по-большому счету искать причину и не нужно. Главное устранить эти «нелогичные» редиректы на уровне сервера.

Отдельным случаем проявления данной проблемы является открытие страницы с <i>ошибкой 400</i>. На данной странице красуется сообщение: The plain HTTP request was sent to HTTPS port

Правим конфиги «Виртуалки»

/etc/httpd/bx/conf/bx_ext_***.com.conf

Если у вас на виртуальной машине работает один сайт, то понадобится найти файл конфига Апапч:

/etc/httpd/bx/conf/default.conf

и над ServerAdmin [email protected] вставляем

ServerName  https://YOUR_SITE

При многосайтовой конфигурация виртуалки делаем тоже самое, но в файле нужного сайта bx_ext_YOUR_SITE.conf

Альтернативный способ

Иногда описанного выше недостаточно. Приходится идти глубже и править директивы связанные с страницами ошибок. Ищем файл отвечающий за конфиг nginx нашего ssl домена

/etc/nginx/bx/site_avaliable/ssl. s1.conf

Добавляем error_page 497 https://$host$request_uri;. Получим нечто похожее на:

# Default SSL certificate enabled website
	server {
		listen	443 default_server http2;
		server_name _;
		# Enable SSL connection
		server_name_in_redirect	off;
                proxy_set_header	Host	$host;
		proxy_set_header	X-Real-IP	$remote_addr;
		proxy_set_header	X-Forwarded-For	$proxy_add_x_forwarded_for;
		proxy_set_header	Host		$host:443;
		proxy_set_header	HTTPS	YES;
		set $proxyserver	"http://127.0.0.1:8888";
		set $docroot		"/home/bitrix/www";
		index index.php;
		root /home/bitrix/www;
		include bx/conf/bitrix.conf;
		# Include server monitoring API's
		include bx/server_monitor.conf;
                error_page 497 https://$host$request_uri; 
	}

Проблема должна исчезнуть. Если вам известны иные методы напишите нам в комментариях.

Решение наверняка 🙂

Если не помогло все вышеописанное и ошибка остается — то причина в файле настроек nginx :

/etc/nginx/bx/site_avaliable/bx_ext_s1. conf

Нужен именно файл обычного протокола http (bx_ext_), а не https (bx_ext_ssl)

Добавляем

return 301 https:/YourDomain.com$request_uri;. Получим нечто похожее на:

# Ansible managed
# Additional website http
server {
		listen 80 ;
		server_name YourDomain.com www.YourDomain.com;
		return 301 https://YourDomain.com$request_uri;
... 
...
		error_page 497 https://$host$request_uri;
}

В 2020 году кроме коронавируса появилось еще что-то новое … и иногда нужно колдовать совсем не с nginx, а с http. Альтернативное решение описали тут.

 

Как настроить HTTPS для 1С-Битрикс

В финальной части цикла поговорим о настройке HTTPS на CMS Битрикс.

Обычно в Битрикс не нужны какие-либо существенные изменения, поскольку почти все ссылки на стандартных шаблонах используются относительные — то есть без указания протокола и даже домена. Вам, скорее всего, после установки сертификата нужно будет только все проверить и внести минимальные правки.

Чек-лист по настройке HTTPS на Битрикс

  1. Ссылки на страницах — они бывают нескольких видов:
  • /contacts/ — относительная ссылка
  • //site.com/contacts/ — абсолютная ссылка с относительным протоколом
  • https://site.com/contacts/ — абсолютная ссылка с протоколом https
  • http://site.com/contacts/ — абсолютная ссылка с протоколом http

Нужно избавиться от всех ссылок последнего вида, поскольку они приводят к ошибкам смешанного содержимого.

  1. Проверьте работу всех форм обратной связи на сайте. Иногда в ajax-запросах используются абсолютные ссылки для отправки данных, которые перестанут работать, если их не поменять на https.
  2. Проверьте выгрузки на торговые площадки, такие как Rozetka, Yandex.Market. В пользовательских скриптах выгрузки протокол может быть жестко прописан. Все файлы выгрузки нужно сгенерировать заново. Установите флажок в поле Использовать в выгрузке протокол https в выгрузке Yandex (Рабочий стол > Магазин > Настройки > Экспорт данных). https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

    6. Если используется CDN, то поставить флажок в поле Сайт работает по https в настройках сервиса Ускорение сайта CDN.

    7. В настройках модуля E-mail маркетинг включите https для ссылок в письмах.

    На этом основная настройка завершена. Если у вас остались какие-либо вопросы — обращайтесь в нашу техподдержку.

    apache — перенаправление с порта 80

    Задавать вопрос

    спросил

    Изменено 2 года, 4 месяца назад

    Просмотрено 63 раза

    Возникла проблема. Сделал редирект для сайта с http на https. Редирект периодически срабатывает, но проблема в том, что иногда при переходе на http://example.

    (.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* — [E=REMOTE_USER:%{HTTP:Авторизация}] DirectoryIndex index.php index.html ExpiresActive on ExpiresByType image/jpeg «доступ плюс 3 дня» ExpiresByType image/gif «доступ плюс 3 дня»

    Nginx:

     пользователь bitrix;
    рабочие_процессы 8;
    error_log /var/log/nginx/error.log предупреждение;
    pid /var/run/nginx.pid;
    worker_rlimit_nofile 10240;
    События {
        использовать эполл;
        worker_connections 10240;
    }
    http {
        включить /etc/nginx/mime.types;
        приложение default_type/принудительная загрузка;
        server_names_hash_bucket_size 128;
        # Описание поддерживаемых форматов журнала доступа
        log_format main '$remote_addr - $remote_user [$time_local - $upstream_response_time] '
                      '$статус "$запрос" $body_bytes_sent '
                      '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
        log_format common '$remote_addr - - [$time_local - $upstream_response_time] '
                        '"$запрос" $статус $bytes_sent '
                        '"$http_referer" "$http_user_agent" $msec';
      балансировщик log_format '$remote_addr - $remote_user [$time_iso8601] "$host" '
                        '"$запрос" $статус $body_bytes_sent "схема: $схема" '
                        '"$http_referer" "$http_user_agent" "$http_x_forwarded_for" '
                        '"$request_length" : "$request_time" ->
    $upstream_response_time'; log_format debug '$upstream_response_time,"$time_local","$remote_addr","$request",$status,$body_bytes_sent'; # загрузить карты по умолчанию включить bx/maps/*.
    conf; # файлы настроек включить bx/settings/*.conf; # Отключить логирование запросов в nginx по умолчанию #access_log /var/log/nginx/access.log общий; доступ_лог выключен; отправить файл включен; tcp_nopush включен; tcp_nodelay включен; client_max_body_size 1024 м; client_body_buffer_size 4 м; # Параметры внутреннего прокси запроса proxy_connect_timeout 600; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 64 КБ; proxy_buffers 8 256 КБ; proxy_busy_buffers_size 256 КБ; proxy_temp_file_write_size 10 м; # Назначить обработчики ошибок по умолчанию error_page 500 502 503 504 /500.html; страница_ошибки 404 = /404.html; # Параметры сжатия контента gzip включен; gzip_proxy любой; gzip_static включен; gzip_http_версия 1.0; приложение gzip_types/приложение x-javascript/текст javascript/css; # add_header включить bx/conf/http-add_header.conf; # Установить веб-сайт по умолчанию включить bx/site_enabled/*.
    conf; # Установить дополнительные сайты включить bx/site_ext_enabled/*.conf; }

    Тест на завиток:

     $ curl http://127.0.0.1 -i
    HTTP/1.1 301 перемещен навсегда
    Сервер: nginx/1.16.0
    Дата: Чт, 23 июля 2020 г., 10:25:56 по Гринвичу
    Тип содержимого: текст/html; кодировка = iso-8859-1
    Длина контента: 303
    Соединение: Keep-alive
    Расположение: https://127.0.0.1:80/
    X-Content-Type-Options: nosniff
    Параметры X-Frame: SAMEORIGIN
    
    <заголовок>
    301 перемещен навсегда
    <тело>
     

    Перемещено навсегда

    Документ перемещен сюда.

    <час>
    Сервер Apache/2.4.6 (CentOS) на 127.0.0.1, порт 80
    • apache
    • .htaccess
    • nginx
    • перенаправление

    4

    Зарегистрируйтесь или войдите в систему

    Зарегистрируйтесь с помощью Google

    Зарегистрироваться через Facebook

    Зарегистрируйтесь, используя адрес электронной почты и пароль

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    apache — Как вы перенаправляете HTTPS на HTTP?

    Задавать вопрос

    спросил

    Изменено 1 год, 9 месяцев назад

    Просмотрено 464k раз

    Как перенаправить HTTPS на HTTP?. То есть противоположное тому, чему (вроде бы) все учат.

    У меня есть сервер на HTTPS, для которого я заплатил сертификацию SSL, и зеркало, для которого у меня его нет, и которое я храню только на случай чрезвычайных ситуаций, поэтому для него нет смысла получать сертификацию.

    На рабочих столах моего клиента есть НЕСКОЛЬКО ярлыков, которые указывают на http://production_server и https://production_server

    (оба работают). Однако я знаю, что если мой рабочий сервер выйдет из строя, то сработает переадресация DNS, и те клиенты, у которых есть «https» на ярлыке, будут смотреть на https://mirror_server (что не работает) и большой жирный Internet Explorer 7 красный экран беспокойства для моей компании.

    К сожалению, я не могу просто переключить это на уровне клиента. Эти пользователи очень неграмотны в компьютерах: и, скорее всего, они сойдут с ума, увидев ошибки «небезопасности» HTTPS (особенно то, как в настоящее время с этим справляются Firefox 3 и Internet Explorer 7: ПОЛНАЯ СТОП, к счастью, но это не помогает мне здесь, LOL).

    Очень легко найти решения Apache для перенаправления http->https, но я не могу сделать наоборот.

    Идеи?

    • апач
    • ssl
    • перенаправление
    • https

    5

    Это не тестировалось, но я думаю, что это должно работать с использованием mod_rewrite

     RewriteEngine On
    RewriteCond %{HTTPS} на
    Правило перезаписи (.*) http://%{HTTP_HOST}%{REQUEST_URI}
     

    11

    Имейте в виду, что механизм перезаписи запускается только после получения HTTP-запроса, а это означает, что вам все равно потребуется сертификат, чтобы клиент мог установить соединение для отправки запроса!

    Однако, если резервная машина будет иметь такое же имя хоста (с точки зрения клиента), тогда не должно быть никаких причин, по которым вы не можете использовать тот же сертификат, что и основная производственная машина.

    3

    Для тех, кто использует файл .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *