Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。 Nginx不属于永洪标准产品的组成部分,其作为高并发场景下反向代理和负载均衡的一种通用的解决方案,在许多的项目中得到了实践,验证了其可用性。本文就其在永洪产品中的具体应用做一个说明。
Nginx安装 本文演示的是 Linux centOS7.x 的操作系统上安装 Nginx ,至于在其它操作系统上进行安装,可以网上自行搜索或者参考Nginx的官方文档,都非常简单。 使用yum 安装 Nginx:yum installnginx -y 安装完成后,通过 rpm\-ql nginx 命令查看 Nginx 的安装信息: #Nginx配置文件 /etc/nginx/nginx.conf# nginx 主配置文件 /etc/nginx/nginx.conf.default #可执行程序文件 /usr/bin/nginx-upgrade /usr/sbin/nginx #nginx库文件
/usr/lib/systemd/system/nginx.service# 用于配置系统守护进程
/usr/lib64/nginx/modules# Nginx模块目录 #存放Nginx日志文件 /var/log/nginx /etc/nginx/conf.d/是子配置项存放处,/etc/nginx/nginx.conf 主配置文件会默认把这个文件夹中所有子配置项都引入; /usr/share/nginx/html/静态文件都放在这个文件夹,也可以根据你自己的习惯放在其他地方; Nginx启动等相关命令:
Nginx在永洪产品的实际应用 多C节点通过nginx做负载均衡 通常情况下,在多C的环境中,客户只希望以一个统一的界面为业务人员提供服务,这个时候反向代理多个C的工作,就可以交由Nginx来实现,但是这里存在一个问题: 如果被代理到不同C上的报告或者数据集的资源不同,就会给用户带来混淆和困扰,所以一般建议做反向代理的多个C,都使用数据库系统的方式配置统一的元数据库,这样可以保证每个用户的请求被代理到不同的C上所看到的内容是统一的。 多C节点实现负载均衡配置如下(仅暂时部分配置供参考):
上图中,展示了三个C节点作为访问节点,配置好访问权重之后,nginx会均匀的向每一台服务器发送对应的请求,实现负载均衡。以下是对上图的主要内容解释:
通过以上配置内容可以实现C节点服务器的负载均衡,减轻单个C节点接受所有请求的访问压力,但美中不足的是,这样做了之后手机端访问之后会出现问题,那么如何解决手机端访问的问题呢?我们一一道来。 Nginx做了负载之后希望移动端也可以访问 目前,我们的移动端主要是通过websocket实现与服务器的双向通信连接,所以在负载均衡配置中,我们需要添加websocket的相关连接配置,以保证我们的移动端也能正常访问,详细配置参考下图:
值得注意的是,这里我们注释了ip_hash,是因为ip_hash可能会导致我们的bi无法获取到真实的请求信息。接下来我们对相关名词进行解释: map指令可以将变量组合成为新的变量,会根据客户端传来的连接中是否带有Upgrade头来决定是否给源站传递Connection头,这样做的方法比直接全部传递upgrade更加优雅。 获取真实IP:在多重代理的情况下nginx会获取真实服务器的IP。 Websocket所需要配置的:服务器处理完请求后,告诉客户端已成功切换协议,升级为Websocket协议。握手成功之后,服务器端和客户端便角色对等,就像普通的Socket一样,能够双向通信。不再进行HTTP的交互,而是开始WebSocket的数据帧协议实现数据交换。 HTTPS与跨域 有些朋友可能还想知道,我的域名是通过nginx解析的,并且我的证书也解析在该域名上,现在想通过代理的方式去解决BI系统https访问的问题,该如何配置。参考下图配置:
通过这样,我们就实现了通过代理的方式使用https访问BI,下面我们对这个配置中的部分内容解释一下:
还有一点,某些朋友可能想到,我配置了https之后,原本的http端口我想让他自动强制跳转到https上来,都通过https访问该怎么做呢? 其实也是有办法的,这里推荐两种方式: 方式1: 通过301跳转:return301 https://$server_name$request_uri;
方式2: 自动匹配再跳转: rewrite^(*)$ https://$server_name$request_uri permanent;
结语 近期我们收到大量小伙伴关于“如何在永洪产品基础上使用Nginx”的咨询,所以本文主要针对于Nginx这类代理服务器,在永洪产品中的具体使用,有不足之处欢迎指正。 还在为文中涉及到的到问题发愁的小伙伴们,也可以赶紧动手试一试。
|