【问题标题】:HTTPS No Data ReceivedHTTPS 未收到数据
【发布时间】:2012-02-10 05:36:43
【问题描述】:

我遇到了 HTTPS 问题,我似乎无法靠自己或通过任何研究来解决。有时,HTTPS 请求会超时并导致“未收到数据”错误。当我使用从 HTTP 到 HTTPS 的虚拟主机重定向时,通常会发生这种情况。它不会每次都发生,机器人可能八分之一,它只是坐到它超时。 我通过 Amazon 负载均衡器将其传递到在 Ubuntu 10.04 上运行 Apache 2 的服务器 (EC2)。 我不知道这是否是重定向问题,尽管似乎不是。这很可能是设置问题,所以我将把我的设置放在下面以便您查看。

我想尽快解决这个问题,任何帮助将不胜感激。 提前致谢!

为“myurl.com”启用的站点中的虚拟主机文件。这应该对除了 deploy.php 之外的所有内容强制使用 HTTPS。

<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”的虚拟主机文件。

<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 时出现“未收到数据”错误(Chrome 中为 324,但每个浏览器都会出现此问题)。我确实相信这与我们在某处的 HTTPS 设置有关,但我无法弄清楚它是什么。

谢谢!

【问题讨论】:

    标签: ubuntu https apache2 amazon-ec2


    【解决方案1】:

    我已经被这个问题困扰了很长时间,而且它与浏览器无关。在任何浏览器上重现都相对容易。

    问题的存在是因为 NAT 路由器表很容易溢出,因为它只能处理这么多的同时连接。现代 AJAX 网站,例如 Facebook 和 Twitter,使用大量的连接。现在大多数此类网站都使用 SSL 连接,这一事实加剧了这个问题。

    为什么这会加剧问题?

    因为握手后 SSL 连接是相对永久的,如果 routing 被 NAT 路由器丢弃,浏览器无法真正处理这种情况,并以 NO DATA 或类似的方式命中 long SSL time out错误。然而,即使这个超时似乎也没有正确地重新连接和重新握手主流浏览器中的 SSL 连接,因为 SSL 握手非常慢,浏览器尝试尽可能重用现有连接,而不了解 NAT 路由相关到连接不存在了。

    此外,同一 SSL 服务器的多个选项卡似乎都重用了相同的 TCP 连接,因此仅关闭一个选项卡肯定不会真正关闭连接。

    因此,一种解决方法是以某种方式减少 SSL NO DATA 超时,并可能修复浏览器,以便实际上删除所有关于预先存在的 SSL 连接的知识,打开一个全新的 TCP 连接以创建 NAT 路由器快乐而神清气爽。

    我还没有找到解决这个问题的切实可行的方法,但是上面的bug肯定和它有关,但是Chrome工程师似乎没有理解根本原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 2014-10-22
      • 2012-09-01
      • 1970-01-01
      相关资源
      最近更新 更多