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这类代理服务器,在永洪产品中的具体使用,有不足之处欢迎指正。
还在为文中涉及到的到问题发愁的小伙伴们,也可以赶紧动手试一试。
ymf
一文详解MOS的寄生模型
如何利用树莓派3B实现智能门禁对讲系统的设计
汽车芯片缺货,会给国内车规级MCU厂商带来什么变化?
多相解决方案对电源数据中心的数字控制实验
为什么电流和磁传感器对TWS(真无线耳机)的设计至关重要
Nginx变身爆火神器,手把手教你在永洪BI中应用
为什么PLC控制电源要加滤波器
智能镜面显示屏让所有的家居设备实现一键掌控
9年风雨历程,看柯莱如何引领景观照明的创新发展
纳米技术是否会代替常规磁存储技术解析
压力继电器的作用
RFID技术将助力港铁安全巡查绿化
北京大学实现千兆赫兹碳纳米管集成电路 推动了碳纳米管电子学的发展
澎芯半导体主驱级SiC MOSFET产出良率达到75%
使用STM32缓存来优化性能与功率效率
码垛机抓手的种类有哪些
电主轴的驱动和结构是什么?
工业嵌入式PC选择须知
欧洲正着手加大构建本土电池供应链
手工制作高精度印制电路板,handmake PCB