【问题标题】:Slow nginx behavior when using as reverse proxy for https用作 https 的反向代理时,nginx 行为缓慢
【发布时间】:2020-12-30 14:25:21
【问题描述】:

设置:

  1. 虚拟 SSL 端点https://hookb.in/VGQ3wdGGzKSE22bwzRdP
  2. 在 localhost 上安装 Nginx

步骤:

  1. 第一次使用浏览器访问hookb.in 端点,我们会得到如下所示的网络活动。耗时 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需要这段时间来解析名称hookb.in。将165.227.143.146 hookb.in 映射到您的/etc/hosts 并检查性能。
  • @PakUula 不,这不是问题......仍然是 200 毫秒差异

标签: ssl nginx https reverse-proxy


【解决方案1】:

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

http://nginx.org/r/keepalive

值得注意的是,确保配置上游块 “保活”指令。在http级别这样的东西 应该可以工作,假设配置没有其他变化:

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

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

(这是我在 nginx 邮件列表中的 response 的大部分未更改的副本。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2017-08-25
    • 1970-01-01
    相关资源
    最近更新 更多