Bitrix. «Работа с сокетами - Ошибка! Не работает»
Во время тестирования сайта, выскакивает следующая ошибка:
Работа с сокетами (check_socket): Fail
А в журнале мы видим следующий лог:
2018-Oct-07 11:39:36 Работа с сокетами (check_socket): Fail Connection to site.ru:80 Success == Request == GET /bitrix/admin/site_checker.php?test_type=socket_test&unique_id=65d296dc8f77882e9984bd5cd50d0653 HTTP/1.1 Host: site.ru == Response == HTTP/1.1 404 Not Found Server: nginx/1.10.3 Date: Sun, 07 Oct 2018 08:39:36 GMT Content-Type: text/html Content-Length: 169 Connection: keep-alive Vary: Accept-Encoding == Body == <html> <head><title>404 Not Found</title></head> <body bgcolor="white"> <center><h1>404 Not Found</h1></center> <hr><center>nginx/1.10.3</center> </body> </html> ========== Ошибка! Не работает
Причины чаще всего две:
1. домен прописан в файле /etc/hosts на IP адрес 127.0.0.1
127.0.0.1 localhost.localdomain localhost site.ru
убираем site.ru, чтобы получилось так:
127.0.0.1 localhost.localdomain localhost
2. Запрос идет на IPv6, например в ISPmanager 4, где нет возможности одновременно назначить домену несколько IP адресов, IPv4 и IPv6
Проверить это можно локальным запросом через консоль:
# wget http://site.ru/bitrix/admin/site_checker.php?test_type=socket_test&unique_id=65d296dc8f77882e9984bd5cd50d0653
Если в ответ вернулась ошибка 404, значит проблема именно в запросе IPv6:
--2018-10-07 11:49:23-- http://site.ru/bitrix/admin/site_checker.php?test_type=socket_test Resolving site.ru (site.ru)... 2a01:4f8:100:0101::1, 144.176.137.187 Connecting to site.ru (site.ru)|2a01:4f8:100:0101::1|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2018-10-07 11:49:23 ERROR 404: Not Found.
В этом случае как вариант - можно отключить IPv6. Для этого нужно добавить в конец файла /etc/sysctl.conf строки:
# IPv6 disabled net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
Перезапустите sysctl с помощью следующей команды
# sysctl -p
Теперь можно проверить IP адреса сетевых интерфейсов командой
# ifconfig
Адресов IPv6 там быть не должно
Третья причина - HTTP авторизация установленная на сайте для тестовых изменений, ее нужно отключить на время проведения проверки