Я только что успешно установил Redis, следуя инструкциям в руководстве по быстрому запуску на http://redis.io/topics/quickstart на моем сервере Ubuntu 10.10. Я запускаю службу как dameon (чтобы ее можно было запустить с помощью init.d)
Сервер является частью кластера Rackspace с внутренними и внешними IP-адресами. Хост работает на порту 6379 (стандарт для Redis)
Я добавил строку в iptables, чтобы разрешить входящие соединения с порта 6379, как показано ниже:
ACCEPT tcp -- anywhere anywhere tcp dpt:6379
В моем PHP-коде на другом сервере я пытаюсь подключиться к новому серверу Redis здесь:
$this->load->helper("iredis");
$hostname = "IP ADDRESS HERE";
$redis = new iRedis(array('hostname' => $hostname, 'port' => 6379));
Как только я это делаю - всегда получаю отказ в соединении. В моем файле redis.conf я закомментировал команду local bind, поэтому она должна прослушивать не только IP-адрес localhost. Я могу подключиться к базе данных на локальном компьютере, но не на другом сервере. Я безуспешно пробовал внешний и внутренний IP-адреса.
Есть предложения, как заставить это работать?
источник
redis-cli -h hostname
Ответы:
Сначала я проверю, чтобы убедиться, что он прослушивает ожидаемые IP-адреса:
В зависимости от того, как вы запускаете / останавливаете, возможно, вы действительно не перезапустили экземпляр, когда думали, что это так. Netstat сообщит вам, слушает ли он, где вы думаете. Если нет, перезапустите его и убедитесь, что он перезапустился. Если он перезапускается и по-прежнему не прослушивает ожидаемый сигнал, на всякий случай проверьте файл конфигурации.
После установки он прослушивает там, где вы ожидаете, от удаленного узла, который должен иметь доступ, попробуйте:
Вы также можете попробовать это с локального хоста, но используйте ожидаемый IP-адрес, а не имя хоста или localhost. В обоих случаях вы должны увидеть PONG в ответе.
В противном случае ваш брандмауэр (-ы) блокирует вас. Это могут быть либо локальные IPTables, либо, возможно, межсетевой экран между узлами. Вы можете добавить оператор ведения журнала в конфигурацию IPtables, чтобы регистрировать соединения более 6379, чтобы увидеть, что происходит. Кроме того, попытка повторного пинга с локального и нелокального на один и тот же IP-адрес должна быть иллюстративной. Если он отвечает локально, но не удаленно, я бы склонился к промежуточному брандмауэру в зависимости от сложности правил ваших таблиц IP-адресов на узле.
источник
Я застрял с той же проблемой, и предыдущий ответ мне не помог (хотя и хорошо написан).
Решение здесь: проверьте свой
/etc/redis/redis.conf
и не забудьте изменить значение по умолчаниюв
Затем перезапустите службу (
service redis-server restart
)Теперь вы можете проверить, что redis прослушивает нелокальный интерфейс с помощью
(замените 192.168.xx своим IP-адресом)
Важное примечание: как заявили несколько пользователей, устанавливать это на сервере, доступном в Интернет, небезопасно . Вы должны быть уверены, что Redis защищен любыми средствами, которые соответствуют вашим потребностям.
источник
bind 0, ::
,bind 0, [::]
,bind 0\nbind6 ::
(где \ п является символ новой строки) и ,bind 0 [::]
но единственное , что работает не имеяbind
линию в конфигурации на всех. По умолчанию он прослушивает 0 (или 0.0.0.0/0) и [::], так что проблем нет, но я хотел бы знать правильный метод, если он мне когда-нибудь понадобится. Кажется, это нигде не задокументировано.iptables
) для блокировки неавторизованных клиентов.В дополнение к прекрасному ответу Орабига:
Я решил эту проблему, полностью удалив
bind
раздел и установивprotected-mode
наno
.Никогда не используйте этот метод на открытых серверах.
источник
Несколько дней я боролся с удаленным подключением к Redis. Наконец-то я это сделал. Вот полный контрольный список, который я составил, чтобы следовать, чтобы подключиться. Некоторые из решений приведены в ответах выше. Тем не менее, я хотел, чтобы мой ответ был нано-вики по этой теме :) Я также добавил несколько полезных ссылок.
Если redis работает локально:
Если пароль не установлен
См.
/etc/redis/redis.conf
Конфигурацию (это местоположение по умолчанию для Ubuntu 18.04, оно может быть у вас в другом месте):Если в конфигурации для защищенного режима установлено значение «нет»:
если привязка IP открыта для доступа из Интернета в конфигурации:
Если брандмауэр Linux разрешает соединения
(здесь для Ubuntu 18.04) Проверьте, разрешает ли входящий интернет-трафик переходить на порт
6379
( порт Redis по умолчанию)Перезапустить службу Redis
Не забудьте перезапустить службу Redis, чтобы изменения вступили в силу и убедитесь, что она запущена:
Проверьте, работает ли он как удаленный сервер
из командной строки используйте,
redis-cli
как если бы сервер Redis находился на удаленном сервере:Если вы можете выполнить ping-PONG на своем сервере Redis через свой интернет-сервер, подключенный как удаленный сервер, то удаленное подключение Redis будет работать.
Предупреждение безопасности
Все вышеперечисленное делает ваши данные Redis полностью открытыми для всех в Интернете.
Чтобы в основном защитить использование
requirepass
иprotected-mode yes
настройки Redis в конфигурации Redis (см. Выше) и заблокировать опасные команды Redis (см. Ссылку выше), для более глубокого понимания см. Эту статью и раздел безопасности сайта Redis ).Полезные ссылки
Некоторые ссылки в помощь Как установить и защитить Redis в Ubuntu 18.04 и как настроить брандмауэр Ubuntu 18.04 .
Надеюсь, поможет.
источник
Орабиг прав.
Вы можете привязать 10.0.2.15 в Ubuntu (VirtualBox), а затем выполнить перенаправление портов с хоста на гостевой Ubuntu.
в /etc/redis/redis.conf
затем перезапустите Redis:
Это должно работать!
источник
если вы сами загрузили redis (не apt-get install redis-server), а затем отредактировали redis.conf с указанными выше предложениями, убедитесь, что вы запускаете redis с такой конфигурацией:
./src/redis-server redis.conf
источник
Установка tcp-keepalive на 60 (было установлено на 0) в конфигурации redis сервера помогла мне решить эту проблему.
источник