Nginx设置TCP上游服务器的SSL配置
Nginx设置TCP上游服务器的SSL配置
本文介绍了如何为NGINX Plus和接受TCP连接的负载均衡的服务器组设置SSL
什么是SSL终端
SSL终端意味着NGINX Plus充当与客户端连接的服务器端SSL端点:它执行对请求的解密和对响应的加密,否则后端服务器就必须这样做。该操作称为终止,因为NGINX Plus关闭了客户端连接,并通过新创建的未加密连接将客户端数据转发到上游组中的服务器。在R6和更高版本中,NGINX Plus对TCP连接和HTTP连接执行SSL终止。
先决条件
- NGINX Plus R6 NGINX Plus或更高版本
- 具有多个TCP服务器的负载均衡的上游组
- SSL证书和私钥(获取或自行生成)
获取SSL证书
首先,您将需要获取服务器证书和私钥,并将它们放在服务器上。可以从可信证书颁发机构(CA)获得证书,也可以使用SSL库(例如OpenSSL)生成证书。
配置NGINX Plus
要配置SSL终止,请在NGINX Plus配置中添加以下指令:
启用SSL
要启用SSL,请为将连接传递到上游服务器组的TCP服务器指定指令的ssl
参数listen
:
stream {server {listen 12345 ssl;proxy_pass backend;#...}
}
添加SSL证书
要添加SSL证书,请使用ssl_certificate
指令指定证书的路径(必须采用PEM格式),并在指令中指定私钥的路径ssl_certificate_key
:
server {#...ssl_certificate /etc/ssl/certs/server.crt;ssl_certificate_key /etc/ssl/certs/server.key;
}
此外,ssl_protocols
and ssl_ciphers
指令可用于限制连接并仅包括SSL / TLS的强版本和密码:
server {#...ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers HIGH:!aNULL:!MD5;
}
该ssl_ciphers
指令告诉NGINX通知SSL库它喜欢哪种密码。
加快安全的TCP连接
实施SSL / TLS可能会严重影响服务器性能,因为SSL握手操作(客户端和服务器交换一系列消息以验证连接是否可信任)会占用大量CPU。SSL握手的默认超时为60秒,可以使用ssl_handshake_timeout
伪指令重新定义。我们不建议将此值设置得太低或太高,因为这可能导致握手失败或等待握手完成的时间较长:
server {#...ssl_handshake_timeout 10s;
}
优化SSL会话缓存
创建适用于每个SSL / TLS连接的会话参数的缓存可以减少握手次数,从而可以显着提高性能。缓存是通过ssl_session_cache
伪指令设置的:
ssl_session_cache;
默认情况下,NGINX Plus使用built-in
会话缓存的类型,这意味着您的SSL库中内置了缓存。这不是最佳选择,因为这样的缓存只能由一个工作进程使用,并且可能导致内存碎片。设置ssl_session_cache
指令以shared
在所有工作进程之间共享缓存,这可以加快以后的连接速度,因为连接设置信息是已知的:
ssl_session_cache shared:SSL:1m;
作为参考,一个1 MB的共享缓存可以容纳大约4,000个会话。
默认情况下,NGINX Plus将缓存的会话参数保留五分钟。将的值ssl_session_timeout
增加到几个小时可以提高性能,因为重新使用缓存的会话参数可以减少耗时的握手次数。当您增加超时时,缓存需要更大,以容纳产生的更多缓存参数。对于以下示例中的4小时超时,适合使用20 MB的缓存:
ssl_session_timeout 4h;
如果超时长度增加,则需要更大的缓存来存储会话,例如20 MB:
server {#...ssl_session_cache shared:SSL:20m;ssl_session_timeout 4h;
}
这些行创建了一个20 MB的内存中高速缓存来存储会话信息,并指示NGINX Plus在添加会话参数后的4小时内重新使用高速缓存中的会话参数。
会话票证 Session_Tickets
会话票证是会话缓存的替代方法。会话信息存储在客户端,因此无需服务器端缓存即可存储会话信息。当客户端恢复与后端服务器的交互时,它会显示会话票证,并且不需要重新协商。将ssl_session_tickets
指令设置为on
:
server {#...ssl_session_tickets on;
}
将会话票证用于上游组时,必须使用相同的会话密钥初始化每个上游服务器。最佳做法是经常更改会话密钥,我们建议您实施一种机制,以在所有上游服务器之间轮换共享密钥:
server {#...ssl_session_tickets on;ssl_session_ticket_key /etc/ssl/session_ticket_keys/current.key;ssl_session_ticket_key /etc/ssl/session_ticket_keys/previous.key;
}
完整的例子
stream {upstream stream_backend {server backend1.example.com:12345;server backend2.example.com:12345;server backend3.example.com:12345;}server {listen 12345 ssl;proxy_pass stream_backend;ssl_certificate /etc/ssl/certs/server.crt;ssl_certificate_key /etc/ssl/certs/server.key;ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers HIGH:!aNULL:!MD5;ssl_session_cache shared:SSL:20m;ssl_session_timeout 4h;ssl_handshake_timeout 30s;#...}
}
在此示例中,该server
块中的指令指示NGINX Plus终止并解密来自客户端的安全TCP流量,并将未加密的流量传递给stream_backend
由三台服务器组成的上游组。
伪指令的ssl
参数listen
指示NGINX Plus接受SSL连接。当客户端请求安全的TCP连接时,NGINX Plus将启动握手过程,该过程将使用ssl_certificate
指令指定的PEM格式证书,指令指定的证书私钥以及and 指令ssl_certificate_key
列出的协议和密码。ssl_protocols
ssl_ciphers
一旦建立了安全的TCP连接,NGINX Plus就会根据ssl_session_cache
指令缓存会话参数。在该示例中,会话高速缓存在所有工作进程(shared
参数)之间共享,大小为20 MB(20m
参数),并且将每个SSL会话保留4小时以供重用(ssl_session_timeout
指令)。
要了解有关NGINX Plus的更多信息,请参阅我们的商业订阅的描述。
Nginx设置TCP上游服务器的SSL配置相关推荐
- Nginx加密与上游服务器的TCP网络通信
Nginx加密与上游服务器的TCP网络通信 本文介绍了如何保护NGINX和TCP上游服务器或TCP服务器上游组之间的TCP通信. 先决条件 NGINX Plus R6和更高版本或使用--with-st ...
- 通过注册表设置VMware Horizon View Client SSL配置
原创作者:运维工程师 林琪 通过注册表设置VMware Horizon View Client SSL配置 注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\VMware,Inc. ...
- rtx服务器设置 文件,rtx 服务器 文件传输 配置
rtx 服务器 文件传输 配置 内容精选 换一换 该任务指导用户使用Loader将数据从HBase导出到SFTP服务器.创建或获取该任务中创建Loader作业的业务用户和密码.确保用户已授权访问作业执 ...
- nginx负载均衡,服务器集群配置,服务器挂机自动切换
1. 首先打开nginx/conf/nginx.conf修改如下配置 http {#在http中添加下面内容#隐藏 Nginx 的版本号,提高安全性. server_tokens off;#指令指定允 ...
- nginx 代理tcp长连接短连接配置
nginx使用ngx_stream_core_module模块代理tcp长连接短连接,可以增强服务器的容灾能力 下面是一个配置信息,自己也方便记录一下
- nginx设置代理后端服务器增加前缀
需求背景 有时候我们需要这样一个操作,线上是请求/aaa/bbb/ccc 但是我们线下测试的时候为了不影响已有服务,增加了一个path为 /ddd/aaa/bbb/ccc这样的 也就是我们后端代理的时 ...
- Nginx使用HTTPS建立与上游服务器的网络通信
Nginx使用HTTPS建立与上游服务器的网络通信 本文介绍了如何加密NGINX与上游组或代理服务器之间的HTTP通信. 先决条件 NGINX开源或NGINX Plus 甲代理服务器或服务器的上游组 ...
- Nginx的TCP运行时健康检查
Nginx的TCP运行时健康检查 本章介绍如何配置TCP的运行状况检查. 介绍 先决条件 被动TCP运行状况检查 服务器缓慢启动 活动TCP运行状况检查 微调TCP运行状况检查 "匹配&qu ...
- Nginx+Keepalived实现Web服务器负载均衡
说明: 操作系统:CentOS 5.X 64位 Web服务器:192.168.21.127.192.168.21.128 站点:bbs.osyunwei.com和sns.osyunwei.com部署在 ...
最新文章
- FileDownloader 很棒的文件下载库
- python代码怎么运行-Python程序执行原理,python程序怎么运行的?
- 来自damon的zencart二次开发教程-2.2登录模块分析
- java配置接口提供给vue,vue在js中配置全局API接口
- SignalTap II逻辑分析仪的使用
- java实现矩阵相乘
- 计算机不能辨别汉字wifi,Win10系统连接不上被隐藏的中文Wifi的解决方法
- 5分钟 0元搭建个人独立博客网站(二)
- YMP框架学习笔记(二)------基于YMP框架搭建WEB应用程序
- 【Linux开发】Ubuntu下几个软件的配置记录backup
- 以太网的分层架构_以太网矩阵(Ethernet Fabric)简介
- 2016级算法第五次上机-C.Bamboo和Coco
- 未来计算机多媒体化,计算机多媒体技术的发展趋势研究
- w10连接远程计算机控制,win10系统教你如何远程控制他人电脑的方法
- 安装docker环境报错:Could not resolve host
- 服务器系统2003出入站,独立服务器win2003系统站点常见问题解答
- 几个吓尿了的公众号,前几个你不可能没听过
- html5 手机站点,HTML5移动端手机网站基本模板 HTML5基本结构
- 大疆aeb连拍_一张图带你轻松读懂摄影必备专业术语~
- ug曲面建模实例教程计算机,UG曲面造型实例-直接建模