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

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

Nginx不属于永洪标准产品的组成部分,其作为高并发场景下反向代理和负载均衡的一种通用的解决方案,在许多的项目中得到了实践,验证了其可用性。本文就其在永洪产品中的具体应用做一个说明。

Nginx变身爆火神器,手把手教你在永洪BI中应用
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启动等相关命令:

开机配置
systemctl enable nginx # 开机自动启动
systemctl disable nginx # 关闭开机自动启动
启动Nginx
systemctl start nginx
停止Nginx
systemctl stop nginx
重启Nginx
systemctl restart nginx
重新加载Nginx
systemctl reload nginx
查看 Nginx 运行状态
systemctl status nginx
查看Nginx进程
ps -ef | grep nginx
杀死Nginx进程
kill -9 pid
Nginx在永洪产品的实际应用

多C节点通过nginx做负载均衡

通常情况下,在多C的环境中,客户只希望以一个统一的界面为业务人员提供服务,这个时候反向代理多个C的工作,就可以交由Nginx来实现,但是这里存在一个问题:

如果被代理到不同C上的报告或者数据集的资源不同,就会给用户带来混淆和困扰,所以一般建议做反向代理的多个C,都使用数据库系统的方式配置统一的元数据库,这样可以保证每个用户的请求被代理到不同的C上所看到的内容是统一的。

多C节点实现负载均衡配置如下(仅暂时部分配置供参考):Nginx变身爆火神器,手把手教你在永洪BI中应用_第1张图片

上图中,展示了三个C节点作为访问节点,配置好访问权重之后,nginx会均匀的向每一台服务器发送对应的请求,实现负载均衡。以下是对上图的主要内容解释:

upstream bi.com
服务器地址池,bi.com可以自行修改,不会在外部使用
weight
分配到每个服务器的访问权重
ip_hash
nginx会让相同的客户端ip请求相同的服务器。
proxy_pass http://bi.com
监听nginx服务器并转到upstream池中的服务器地址
通过以上配置内容可以实现C节点服务器的负载均衡,减轻单个C节点接受所有请求的访问压力,但美中不足的是,这样做了之后手机端访问之后会出现问题,那么如何解决手机端访问的问题呢?我们一一道来。

Nginx做了负载之后希望移动端也可以访问

目前,我们的移动端主要是通过websocket实现与服务器的双向通信连接,所以在负载均衡配置中,我们需要添加websocket的相关连接配置,以保证我们的移动端也能正常访问,详细配置参考下图:Nginx变身爆火神器,手把手教你在永洪BI中应用_第2张图片

Nginx变身爆火神器,手把手教你在永洪BI中应用
值得注意的是,这里我们注释了ip_hash,是因为ip_hash可能会导致我们的bi无法获取到真实的请求信息。接下来我们对相关名词进行解释:

map指令可以将变量组合成为新的变量,会根据客户端传来的连接中是否带有Upgrade头来决定是否给源站传递Connection头,这样做的方法比直接全部传递upgrade更加优雅。

获取真实IP:在多重代理的情况下nginx会获取真实服务器的IP。

Websocket所需要配置的:服务器处理完请求后,告诉客户端已成功切换协议,升级为Websocket协议。握手成功之后,服务器端和客户端便角色对等,就像普通的Socket一样,能够双向通信。不再进行HTTP的交互,而是开始WebSocket的数据帧协议实现数据交换。

HTTPS与跨域

有些朋友可能还想知道,我的域名是通过nginx解析的,并且我的证书也解析在该域名上,现在想通过代理的方式去解决BI系统https访问的问题,该如何配置。参考下图配置:Nginx变身爆火神器,手把手教你在永洪BI中应用_第3张图片

Nginx变身爆火神器,手把手教你在永洪BI中应用
通过这样,我们就实现了通过代理的方式使用https访问BI,下面我们对这个配置中的部分内容解释一下:

ssl_certificate
证书路径
ssl_certificate_key
证书密钥路径
ssl_session_cache
设置存储session参数的缓存的类型和大小
ssl_session_timeout
Session过期时间
ssl_ciphers
指定用于保护服务器通信的算法
ssl_prefer_server_ciphers
设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件
ssl_protocols
用于启动特定的加密协议
proxy_cookie_path
设置session的保存位置,如果是通过https转发访问到http的服务上,配置这个解决跨域问题
还有一点,某些朋友可能想到,我配置了https之后,原本的http端口我想让他自动强制跳转到https上来,都通过https访问该怎么做呢?

其实也是有办法的,这里推荐两种方式:

方式1:

通过301跳转:return301

https:// s e r v e r n a m e server_name servernamerequest_uri;

Nginx变身爆火神器,手把手教你在永洪BI中应用_第4张图片

方式2:

自动匹配再跳转:

rewrite^(*)$ https:// s e r v e r n a m e server_name servernamerequest_uri permanent;

Nginx变身爆火神器,手把手教你在永洪BI中应用_第5张图片

结语

近期我们收到大量小伙伴关于“如何在永洪产品基础上使用Nginx”的咨询,所以本文主要针对于Nginx这类代理服务器,在永洪产品中的具体使用,有不足之处欢迎指正。

还在为文中涉及到的到问题发愁的小伙伴们,也可以赶紧动手试一试。

你可能感兴趣的:(Nginx变身爆火神器,手把手教你在永洪BI中应用)