Назад | Перейти на главную страницу

Elastic Load Balancer не работает для порта 8000 под управлением Node.js

У меня есть экземпляр EC2 с PHP и Node.js (socket.io), и чтобы разрешить доступ, я освободил порты 80 (Apache) и 8000 (Node), и все работало нормально (если я получил доступ www.mydomain.com веб-сайт отображается нормально, и если я захожу www.mydomain.com:8000/socket.io/socket.io.js в socket.io отображается сценарий). Однако я хочу настроить Elastic Load Balancer для этого экземпляра (просто для тестирования, потому что позже я буду использовать его с Auto Scaling), поэтому я создал целевую группу со следующими настройками:

После этого я зарегистрировал экземпляр в Target Group, и проверка статуса сработала отлично:

Итак, в моем Load Balancer (Application Load Balancer, а не Classic Load Balancer) я добавил следующие прослушиватели (если я удалю прослушиватель 8000, когда я получаю доступ DNS:8000 или DNS:8000/socket.io/socket.io.js ничего не отображается, только ошибка ERR_CONNECTION_REFUSED):

И в группе безопасности этого Load Balancer я также добавил порты 80 и 8000:

Поэтому при доступе к DNS-имени Load Balancer он обычно показывает веб-сайт, однако, если я попытаюсь получить доступ к DNS:8000/socket.io/socket.io.js он перезаписывает URL-адрес на DNS:8000 и продолжает показывать сайт, а не socket.io сценарий. Я уже пробовал добавить Паттерн Пути /socket.io/* для слушателя 8000, но это продолжается так же. Итак, как мне сделать, чтобы показать socket.io сценарий?

У вас есть одна целевая группа, которая указывает на порт 80 вашего экземпляра. Вы прикрепили эту целевую группу к двум слушателям.

Вместо этого вам нужны две целевые группы, которые отдельно регистрируют ваш экземпляр: одна нацелена на 8000, а другая на 80. Затем вы отдельно прикрепите эти целевые группы к 80 и 8000 слушателям.