用作 https 的反向代理时 nginx 行为变慢

Slow nginx behavior when using as reverse proxy for https

设置:

  1. 虚拟 SSL 端点 https://hookb.in/VGQ3wdGGzKSE22bwzRdP
  2. 在本地主机上安装 Nginx

步骤:

  1. 第一次使用浏览器访问 hookb.in 端点,我们得到网络 activity,如下所示。耗时 865 毫秒
    图1

  2. 随后使用浏览器访问 hookb.in 端点花费的时间更少,因为它使用相同的 tcp 连接,下面是参考的屏幕截图。 (一切顺利!!)

    图2

  3. 使用以下 nginx 配置设置 http-> https 反向代理

worker_processes  1;
events {
    worker_connections  1024;
}
http {
keepalive_timeout 65;
    server {
        listen      80;
        server_name  localhost;     
        location /session {
            proxy_pass  https://hookb.in/VGQ3wdGGzKSE22bwzRdP;
            proxy_http_version 1.1;
            proxy_set_header Connection "keep-alive";
            proxy_ssl_session_reuse on;
            proxy_socket_keepalive on;  
        }
    }
}

  1. 现在从浏览器点击 http://127.0.0.1/session,nginx 将正常工作并代理来自 https 站点的内容。
    但是 nginx 响应时间总是比直接访问 https 站点多 200ms。下面是 ref
    的屏幕截图 为什么 nignx 花费额外的时间,它是每次都打开新的 ssl 连接还是有其他问题?
    我知道使用反向代理我们会增加额外的跃点,但是 200 毫秒是很大的不同。
    我该如何解决?

您使用的配置意味着nginx会打开一个新的 为每个代理请求连接到上游服务器。到 配置 nginx 以保持上游连接处于活动状态,请参阅 此处“keepalive”指令的说明:

http://nginx.org/r/keepalive

值得注意的是,确保配置一个上游块 “保持活动”指令。在 http 级别是这样的 假设配置中没有其他更改,应该可以工作:

upstream hookb.in {
    server hookb.in:443;
    keepalive 2;
}

在上面的示例中,nginx 将保持最多两个连接。

(这几乎是我在 nginx 邮件列表中的 response 的副本。)