Ошибка редиректа на http://$host:443
Ошибка неверного порта при отдельных переходах по страницам характерна не только для Виртуальной Машины, а и многих самостоятельных конфигураций с Nginx. Однако, данная ошибка присутствует во всех VM Bitrix на протяжении последних лет.
Как проявляется баг?
Самыми частыми симптомами появления проблемы являются появившиеся ошибки в отчетах поисковых краулеров Google и Яндекс. В один прекрасный день после перехода на https протокол в отчетах начинают попадаться ошибочные страницы с url - http://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 webmaster@localhost вставляем
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
Добавляем 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. Альтернативное решение описали тут.
Комментарии: