Я запускаю приложение loadbalancer внутри эластичного бобового стебля.У меня есть экземпляр ec2 под управлением php и apache.Если я перейду на http://example.com, я получу сайт.Я настроил сервер сокетов, используя node и socket.io на одной машине.(Это устанавливается и демонизируется с использованием .ebextensions и pm2).Демон сокета работает на порту 8000.
Я добавил listener
для порта 8000 в конфигурации eb loadbalancer.Этот авто создал rule
с listener port
8000
Проблема в том, что когда я перехожу на http://example.com:8000, я получаю ответ с веб-страницей так же, как если бы я перешел на http://www.example.com
Я могу остановить демон сокета и все равно загрузить http://example.com:8000, который отвечает веб-сайтом.Похоже, что loadbalancer прослушивает порт 8000, но маршрутизирует его на порт экземпляра ec2 80
Я бы ожидал, что входящие запросы на порт 8000 будут перенаправлены на порт экземпляра ec2 8000, на котором должен работать мой сокет-сервер, ноэтого не происходит.
Вот вывод журнала с балансировщика нагрузки
http 2019-03-20T19:09:59.541171Z app/awseb-AWSEB-9GXN3SC7L5SW/e13ff49d239ea88e
184.xx.xxx.xxx:58786 172.xx.xx.197:80 0.000 0.008 0.000 404 404 520 32879
"GET http://www.example.com:8000/?EIO=3&transport=polling&t=McSWbag HTTP/1.1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" - - arn:aws:elasticloadbalancing:us-east-2:xxxxxxxx:targetgroup/awseb-AWSEB-xxxxxx/xxxxxxx "Root=1-xxxxx-xxxxxxxx" "-" "-" 0 2019-03-20T19:09:59.532000Z "forward" "-" "-"
Я не уверен, как журнал читает, но во второй строке я замечаю: 172.xx.xx.197:80
это частный ipмой экземпляр ec2 и он показывает порт 80