找文章 / 找答案
精选问答 更多内容

Nginx变身爆火神器,手把手教你在永洪BI中应用

寻找新技能 显示全部楼层 发表于 2021-8-5 17:30:10 |阅读模式 打印 上一主题 下一主题
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这类代理服务器,在永洪产品中的具体使用,有不足之处欢迎指正。
还在为文中涉及到的到问题发愁的小伙伴们,也可以赶紧动手试一试。

回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部