所有Nginx虚拟主机都可以共享相同的ssl_session_cache吗?

凯吉·马格努斯(KajMagnus)

对我而言,有关如何ssl_session_cache工作的Nginx文档尚不清楚。我想知道这是否:

ssl_session_cache shared:SSL:10m;

http块中或在每个 server(即虚拟主机)块中声明,将导致1)一个名为SSL的单个全局高速缓存,大小为10 MB。或2)每台服务器一个10 MB的高速缓存,所有高速缓存的总大小= num服务器x 10 MB。

该文档:

共享
所有工作进程之间共享的缓存。缓存大小以字节为单位;一兆字节可以存储大约4000个会话。每个共享缓存应具有任意名称。具有相同名称的缓存可以在多个虚拟服务器中使用。

如果只有一个缓存,那么我想将其大小乘以服务器数量。因此,如果我有5台服务器(即5台虚拟主机),则将其放置ssl_session_cachehttp块中并执行以下操作:

ssl_session_cache shared:SSL:50m;   # 10 * 5 = 50

那么,问题就来了:ssl_session_cache shared:SSL:10m;是为每台服务器创建一个10 MB的高速缓存,还是为所有服务器创建一个10 MB的高速缓存?

如果是每台服务器,那么没有办法为所有服务器配置一个全局缓存吗?(如果不可能,那么,如果有人知道的话,为什么不呢?)在我看来,这将导致更有效的内存使用。(因为一台服务器具有许多客户端,因此可以使用本来专用于当前可能有零客户端的其他服务器的内存。)

hoo

综观实施ssl_session_cache通过ngx_http_ssl_session_cachenxg_http_ssl_module.c它创建了一个名为“SSL”一个共享内存区,即一个SSL会话缓存。随后对ssl_session_cache的任何调用都将检索先前配置的名为“ SSL”的共享内存区域,而不是创建一个新的共享内存区域(ngx_cycle.c中的cmp。ngx_shared_memory_add)。


可以通过为相同的名称配置不同的大小来轻松地验证这一点,如下所示:

...
ssl_session_cache shared:SSL:4m;

server {
    ...
    ssl_session_cache shared:SSL:50m;
}

这将导致错误消息,例如:

[emerg] the size 52428800 of shared memory zone "SSL" conflicts with already declared size  4194304 in /etc/nginx/nginx.conf:37

详细信息(已添加KajMagnus)

共享内存区域在这里添加

  sscf->shm_zone = ngx_shared_memory_add(cf, &name, n,
                                         &ngx_http_ssl_module);

如您所见,不同name导致创建不同的缓存。因此,一个可以有许多不同的共享内存缓存,每个缓存都有其自己的唯一名称。但是,每台服务器只能使用一个共享的SSL内存区域-结构shm_zone上的每个SSL服务器配置只有一个ngx_http_ssl_srv_conf_t *sscf


tl; dr是否在http或服务器级别声明SSL会话高速缓存无关紧要。只要为缓存分配了相同的名称,就使用相同的缓存。为了防止错误消息传递给具有相同名称的缓存,必须始终使用相同的大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CSS:所有纵横比的背景图像都可以拉伸吗?

来自分类Dev

所有的NOT IN都可以转换为NOT EXISTS吗?

来自分类Dev

C ++ 11 STL中的所有内容都可以由用户实现吗?

来自分类Dev

Nginx放弃与多个虚拟主机的SSL握手

来自分类Dev

在几乎所有地方都可以使用async / await吗?

来自分类Dev

Bluemix的所有服务都可以在移动应用程序中使用吗?

来自分类Dev

所有版本的Ubuntu 16.04都可以运行相同的程序吗?

来自分类Dev

所有卷积神经网络都可以用于任意数量的通道图像吗?

来自分类Dev

所有版本的Ubuntu 16.04都可以运行相同的程序吗?

来自分类Dev

例如,是否可以为所有虚拟主机(例如mail。*)创建公共子域?

来自分类Dev

所有版本的Ubuntu都可以抵御DROWN攻击吗?

来自分类Dev

所有的JavaScript调用都可以在Hybrid Android应用中使用吗?

来自分类Dev

在<scripts>的所有浏览器上都可以加载/加载吗?

来自分类Dev

在Unity支持的所有平台上都可以使用WWW吗?

来自分类Dev

所有的NOT IN都可以转换为NOT EXISTS吗?

来自分类Dev

与Git共享的虚拟主机

来自分类Dev

AMPPS可以在同一IP上运行具有不同端口的虚拟主机吗?

来自分类Dev

虚拟主机中有多个SSL证书?

来自分类Dev

如何列出CentOS 7上的所有虚拟主机?(nginx)

来自分类Dev

所有marketo用户都可以访问最新的(2_9)SOAP端点吗?

来自分类Dev

NGINX-如何为所有虚拟主机设置到期标头?

来自分类Dev

使用Impala访问Hbase表时,所有SQL操作都可以工作吗?

来自分类Dev

为什么即使配置中只有本地主机的虚拟主机,我也可以访问Nginx服务器?

来自分类Dev

阿姆斯特朗公理的所有属性都可以应用于多值依赖吗?

来自分类Dev

硬件购物:所有M Key Slot都可以与NVMe一起使用吗?

来自分类Dev

所有按钮都可以从Android片段中打开相同的活动

来自分类Dev

swift 3 中的所有约束都可以动画吗?

来自分类Dev

如何让所有视图都可以访问共享的 ProgressCircle 控件?

来自分类Dev

Nginx ssl_session_cache 无说明

Related 相关文章

  1. 1

    CSS:所有纵横比的背景图像都可以拉伸吗?

  2. 2

    所有的NOT IN都可以转换为NOT EXISTS吗?

  3. 3

    C ++ 11 STL中的所有内容都可以由用户实现吗?

  4. 4

    Nginx放弃与多个虚拟主机的SSL握手

  5. 5

    在几乎所有地方都可以使用async / await吗?

  6. 6

    Bluemix的所有服务都可以在移动应用程序中使用吗?

  7. 7

    所有版本的Ubuntu 16.04都可以运行相同的程序吗?

  8. 8

    所有卷积神经网络都可以用于任意数量的通道图像吗?

  9. 9

    所有版本的Ubuntu 16.04都可以运行相同的程序吗?

  10. 10

    例如,是否可以为所有虚拟主机(例如mail。*)创建公共子域?

  11. 11

    所有版本的Ubuntu都可以抵御DROWN攻击吗?

  12. 12

    所有的JavaScript调用都可以在Hybrid Android应用中使用吗?

  13. 13

    在<scripts>的所有浏览器上都可以加载/加载吗?

  14. 14

    在Unity支持的所有平台上都可以使用WWW吗?

  15. 15

    所有的NOT IN都可以转换为NOT EXISTS吗?

  16. 16

    与Git共享的虚拟主机

  17. 17

    AMPPS可以在同一IP上运行具有不同端口的虚拟主机吗?

  18. 18

    虚拟主机中有多个SSL证书?

  19. 19

    如何列出CentOS 7上的所有虚拟主机?(nginx)

  20. 20

    所有marketo用户都可以访问最新的(2_9)SOAP端点吗?

  21. 21

    NGINX-如何为所有虚拟主机设置到期标头?

  22. 22

    使用Impala访问Hbase表时,所有SQL操作都可以工作吗?

  23. 23

    为什么即使配置中只有本地主机的虚拟主机,我也可以访问Nginx服务器?

  24. 24

    阿姆斯特朗公理的所有属性都可以应用于多值依赖吗?

  25. 25

    硬件购物:所有M Key Slot都可以与NVMe一起使用吗?

  26. 26

    所有按钮都可以从Android片段中打开相同的活动

  27. 27

    swift 3 中的所有约束都可以动画吗?

  28. 28

    如何让所有视图都可以访问共享的 ProgressCircle 控件?

  29. 29

    Nginx ssl_session_cache 无说明

热门标签

归档