Воскресенье, 07 октября 2018 12:00

Bitrix. «Работа с сокетами - Ошибка! Не работает»

Во время тестирования сайта, выскакивает следующая ошибка:

Работа с сокетами (check_socket): Fail

А в журнале мы видим следующий лог:

2018-Oct-07 11:39:36 Работа с сокетами (check_socket): Fail
Connection to agency.co-meta.ru:80 Success
== Request ==
GET /bitrix/admin/site_checker.php?test_type=socket_test&unique_id=65d296dc8f77882e9984bd5cd50d0653 HTTP/1.1
Host: agency.co-meta.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 там быть не должно

Прочитано 34 раз Последнее изменение Воскресенье, 07 октября 2018 12:23
Твитнуть
Другие материалы в этой категории: « Как узнать UUID диска в Debian