HTTPS Данные не получены - PullRequest
       91

HTTPS Данные не получены

1 голос
/ 14 января 2012

У меня проблема с HTTPS, которую я не могу решить самостоятельно или с помощью какого-либо исследования.Время от времени HTTPS-запрос блокируется и приводит к ошибке «No Data Received».Обычно это происходит, когда я использую перенаправление виртуального хоста с HTTP на HTTPS.Это не происходит каждый раз, бот может быть 1 раз в 8 раз, он просто сидит до истечения времени ожидания.Я передаю это через Amazon Load Balancer и затем на сервер (EC2), на котором работает Apache 2 в Ubuntu 10.04.Я не могу сказать, является ли это проблемой перенаправления, хотя это не так.Скорее всего, это проблема с настройкой, поэтому я собираюсь изложить свою настройку ниже, чтобы вы могли ее увидеть.

Я бы хотел решить эту проблему как можно быстрее, и любая помощь будет принята с благодарностью.Заранее спасибо!

Файл виртуального хоста на сайтах с поддержкой myurl.com.Это должно заставить HTTPS на всем, кроме для deploy.php.</p> <pre><code><VirtualHost *:80> ServerName myurl.com RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{THE_REQUEST} !^[A-Z]+\s/deploy.php [NC] RewriteRule !^deploy.php https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L] </VirtualHost>

Файл виртуального хоста для 'myurl-ssl' в сайтах с поддержкой.</p> <pre><code><VirtualHost *:80> ServerName www.myurl.com RewriteCond %{HTTPS} !=on RewriteCond %{THE_REQUEST} !^[A-Z]+\s/deploy.php [NC] RewriteRule !^depoy.php https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L] NameVirtualHost *:443 </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on ServerAdmin admin@myurl.com ServerName myurl.com SSLCertificateFile /etc/apache2/certs/myurl.pem SSLCertificateKeyFile /etc/apache2/certs/private.key SSLCertificateChainFile /etc/apache2/certs/AddTrustExternalCARoot.crt SSLProtocol all SSLCipherSuite HIGH:MEDIUM DocumentRoot /var/www ErrorLog /var/log/apache2/error.log LogLevel info CustomLog /var/log/apache2/access.log combined </VirtualHost>

Опять же, проблема, кажется, что-то в моей настройке или в моем перенаправлении на HTTPS, где я получаю ошибку «Нет данных получено» (324 вChrome, но эта проблема встречается в каждом браузере).Я действительно считаю, что это как-то связано с нашей настройкой HTTPS, но я не могу понять, что это такое.

Спасибо!

1 Ответ

1 голос
/ 30 августа 2013

Я давно страдаю от этой проблемы, и она не зависит от браузера. Его относительно легко воспроизвести в любом браузере.

Проблема существует, потому что таблица маршрутизатора NAT переполняется очень легко, потому что она может обрабатывать только столько одновременных соединений. Современные AJAX-сайты, такие как Facebook и Twitter, используют множество соединений. Эта проблема усугубляется тем фактом, что большинство таких сайтов в настоящее время используют SSL-соединения.

Почему это усугубляет проблему?

Поскольку SSL-соединения являются относительно постоянными после рукопожатия, и если маршрутизация отбрасывается маршрутизатором NAT, браузер не может справиться с ситуацией, и истекает длительное время ожидания SSL без ДАННЫХ или аналогичной ошибки. , Тем не менее, даже этот тайм-аут не похоже на правильное переподключение и повторное установление связи SSL-соединений в основных браузерах, поскольку SSL-установление связи происходит очень медленно, браузеры пытаются максимально использовать существующие подключения, не понимая, что маршрутизация NAT связана с к соединению больше не существует.

Кроме того, кажется, что несколько вкладок на одном и том же сервере SSL повторно используют одно и то же TCP-соединение, поэтому закрытие только одной вкладки определенно не приведет к закрытию соединения.

Таким образом, обходной путь может заключаться в том, чтобы как-то сократить время ожидания SSL NO DATA и, возможно, исправить браузеры, чтобы фактически стереть все знания о ранее существующих SSL-соединениях, открыв совершенно новое TCP-соединение, чтобы сделать маршрутизатор NAT счастливы и освежены.

Я еще не нашел практического способа решения этой проблемы, но приведенная выше ошибка определенно связана с ней, но, похоже, что инженеры Chrome не понимают причину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...