保持反向代理和后端服务器之间的 SSL 连接处于活动状态

保持反向代理和后端服务器之间的 SSL 连接处于活动状态

我有一个后端服务器(Apache),它离我们的大多数用户太远了,所以我们的想法是实现一个更近的反向代理,充当缓存。

乍一看,它确实很有效。缓存的静态文件提供速度极快,但除此之外,反向代理 (NGINX) 需要连接到后端服务器,这需要一些时间进行 SSL 握手,从而使这些初始请求变得缓慢。

我一直在搜索这方面的信息,但找不到保持此连接的方法。有办法吗?

我甚至尝试去了解更多有关 websockets 的知识,但是我能找到的所有实现都是为了回答特定的请求,而不是保持两个 web 服务器(反向代理的 NGINX 和后端的 Apache)之间的连接。

你们当中有谁对要学习/使用/搜索什么才能实现这一目标有什么想法或建议吗?

提前谢谢您!

答案1

在 nginx 中你只能指定keepalive对于上游连接,如果连接定义在upstream块。例如:

upstream backend {
    server private-api.example.com:443;

    keepalive 32;
}

此处keepalive指定每个与上游服务器同时打开的最大连接数工作进程

要使用上游,您需要指定其名称proxy_pass而不是后端地址。

例如,如果您以前使用过:

     proxy_pass https://private-api.example.com:443;

您可以将其更改为:

     proxy_pass https://backend;

按字面意思用上游的名称替换定义的server

您还必须将 HTTP 版本设置为 1.1(因为它默认为 1.0,这很荒谬)并清除连接标头:

    proxy_http_version 1.1;
    proxy_set_header Connection "";

请记住,keepalive_timeout您还可以在其中定义一个upstream可能需要调整的超时时间。默认情况下,该时间是 60 秒,因此,如果连接空闲了这么长时间,它将被关闭,即使keepalive打开的连接数少于 100 个。后端服务器将有自己的保持活动超时,您也需要单独调整该超时时间。

相关内容