У меня такая настройка: два порта на моей карте балансировщика нагрузки на один порт моего экземпляра (экземпляр проверяет HTTP-заголовок и выдает HTTP-перенаправление на сайт HTTPS для любого запроса, отличного от HTTPS). На панели управления AWS отображается:
LB Proto| LB Port| Inst Proto| Inst Port| SSL Cert
---------------------------------------------------
HTTP | 80 | HTTP | 8080 | N/A
HTTPS | 443 | HTTP | 8080 | my_ssl_cert
В моем случае я могу проверить входящий трафик следующим образом:
sudo ngrep -q -d eth0 -W byline port 8080
Это успешно: (https на балансировщик нагрузки)
curl -k https://111.111.111.111/
но это не удается: (http на балансировщик нагрузки)
curl http://111.111.111.111/
(где 111.111.111.111 - IP-адрес балансировщика)
Curl останавливается и истекает время ожидания, и я никогда не вижу активности на порту 8080 на моем экземпляре с ngrep (я вижу, когда отправляю первый запрос).
Что происходит? Почему мой балансировщик нагрузки не пересылает ЛЮБОЙ трафик, полученный через порт 80, на порт 8080 моего экземпляра?
Как подтверждено в комментариях, ваша проблема заключалась в том, что ваша группа безопасности Load Balance не была настроена для разрешения входящих запросов на порт 80.