В начале проекта я использую http для соединения с ec2 напрямую с ip-адресом, а не с именем домена, и он прекрасно подключается и работает нормально с моим клиентом c # и веб-клиентом, который подключился к ec2 через ip adderess.
Недавно я добавил протокол HTTPS для своего балансировщика нагрузки и настроил все ec2 с группами безопасности https, и возникла проблема.
Веб-клиент Signalr с https и ip-адресом подключается нормально на ec2, но клиент c # с https и ip-адресом не подключается. C # клиент выбрасывает метод закрытия соединения непрерывно.
Чтобы решить эту проблему, я изменил свой URL-адрес подключения с ip на доменное имя эластичного бобового стебля на c # клиент и подключенный сигнализатор, но происходят следующие вещи.
1) В первый раз, когда я соединяюсь с доменным именем beanstalk, он отвечает с ошибкой заголовка 400 при установлении соединения, а также предоставляет данные ответа из базы данных, поэтому соединение устанавливается впервые.
2) После ответа сервера я вызываю другой метод сервера, в то время произошла ошибка, указав, что соединение разорвано, пожалуйста, запустите соединение, прежде чем делать запрос к серверу.
3) В сигнализаторе есть метод закрытия соединения, который вызывается, если соединение было закрыто и оно не вызывается.
4) Я искал свой запрос в Интернете и обнаружил, что нам нужно настроить сокет-соединение на beanstalk, поскольку у них такая же проблема с nginx. Я использую IIS, и конкретного ответа на этот вопрос нет.
5) Я пытался подключиться напрямую по доменному имени экземпляра ec2, но сигнализатор не установил соединение и напрямую инициировал метод закрытия соединения без каких-либо ошибок или предупреждений.
6) В конфигурации моей сети я включил входящий порт с 443 и 80. Если я сделал запрос от своего браузера на URL этого домена beanstalk или ec2, он отлично работает
- Если у вас есть идея настроить сокет на aws ec2 или эластичный beanstalk, это может помочь решить эту проблему.