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节点实现负载均衡配置如下(仅暂时部分配置供参考):
上图中,展示了三个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中应用
值得注意的是,这里我们注释了ip_hash,是因为ip_hash可能会导致我们的bi无法获取到真实的请求信息。接下来我们对相关名词进行解释:
map指令可以将变量组合成为新的变量,会根据客户端传来的连接中是否带有Upgrade头来决定是否给源站传递Connection头,这样做的方法比直接全部传递upgrade更加优雅。
获取真实IP:在多重代理的情况下nginx会获取真实服务器的IP。
Websocket所需要配置的:服务器处理完请求后,告诉客户端已成功切换协议,升级为Websocket协议。握手成功之后,服务器端和客户端便角色对等,就像普通的Socket一样,能够双向通信。不再进行HTTP的交互,而是开始WebSocket的数据帧协议实现数据交换。
HTTPS与跨域
有些朋友可能还想知道,我的域名是通过nginx解析的,并且我的证书也解析在该域名上,现在想通过代理的方式去解决BI系统https访问的问题,该如何配置。参考下图配置:
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://servernameserver_nameservernamerequest_uri;
方式2:
自动匹配再跳转:
rewrite^(*)$ https://servernameserver_nameservernamerequest_uri permanent;
结语
近期我们收到大量小伙伴关于“如何在永洪产品基础上使用Nginx”的咨询,所以本文主要针对于Nginx这类代理服务器,在永洪产品中的具体使用,有不足之处欢迎指正。
还在为文中涉及到的到问题发愁的小伙伴们,也可以赶紧动手试一试。
Nginx变身爆火神器,手把手教你在永洪BI中应用相关推荐
- 堆垛机器人编程技巧_两步变身老鸟,手把手教你提升ABB机器人编程技巧!(二)...
原标题:两步变身老鸟,手把手教你提升ABB机器人编程技巧!(二) 1 双机器人与变位机编程 第一:如下图,双机器人+变位机系统,使用Multimove,(即一台控制器,一个示教器,三个运动任务) 第二 ...
- 手把手教你开发微信小程序中的插件
继上次 手把手教你实现微信小程序中的自定义组件 已经有一段时间了(不了解的小伙伴建议去看看,因为插件很多内容跟组件相似),今年3月13日,小程序新增了 小程序**「插件」 功能,以及开发者工具新增 「 ...
- 手把手教你用plotly绘制excel中常见的16种图表(下)
大家好,我是才哥. 上一期咱们介绍<手把手教你用plotly绘制excel中常见的16种图表(上)>演示了8种常见图表,今天我们继续演示另外8种常见图表的绘制. 文章目录 1. 树状图 2 ...
- 官方资源帖!手把手教你在TensorFlow 2.0中实现CycleGAN,推特上百赞
铜灵 发自 凹非寺 量子位 出品| 公众号 QbitAI CycleGAN,一个可以将一张图像的特征迁移到另一张图像的酷算法,此前可以完成马变斑马.冬天变夏天.苹果变桔子等一颗赛艇的效果. 这行被顶会 ...
- 手把手教你搭建区块链(中)
"学习区块链的最快方法就是自己亲手搭建一个" 本文接上篇:手把手教你搭建区块链(上) "了解工作量证明" 工作量证明算法(PoW)是在区块链上创建或挖掘新区块 ...
- 手把手教你用Python实现Excel中的Vlookup功能
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 像树一样成长. 一.前言 大家好, ...
- python爬取app聊天信息_手把手教你爬取手机app中的信息
使用工具:Fiddler+基础爬虫 Fiddler是一个抓包神器,用来检查电脑和互联网之间所有的通讯内容,而且比较简单容易上手,显示的格式也比较友好. 网页基本都会爬了,现在开始要想想如何去爬手机ap ...
- 微信小程序轮播中的current_手把手教你美化微信小程序中的轮播效果
微信小程序现在依然很火,相信大家有目共睹:所以作为前端开发者,掌握如何开发小程序,是一项必备技能了,你觉得呢? 相对于PC和H5开发,小程序坑很多,所以需要慢慢"踩",被坑多了,路 ...
- 手把手教你用plotly绘制excel中常见的8种图表
最近不是在学习plotly嘛,为了方便理解,我们这里取excel绘图中常见的16种图表为例,分两期演示这些基础图表怎么用plotly进行绘制! 第一部分:柱状图.条形图.折线图.面积图.饼图与圆环图. ...
最新文章
- c java 的关系,c#与c、java的关系
- 解决push的时候有时候会卡一下的问题
- Android AIDL示例-回调方法版
- 程序启动报错:ORA-12505;PL/SQL却可以登录的解决方法
- python3.7.2安装教程-CentOS 7安装Python教程
- 变量和指针——学习笔记
- 利用Matlab拟合时序植被生长季曲线,并求解物候参数
- centos mysql_CentOS MySQL数据库备份工具mysqldump介绍
- c语言中char buffer,C语言对char*的封装,形成buffer
- 【转载】C# 中的各种命名规范
- java查询城市区号_中国城市电话区号对照表
- 在FireFox中使用IE Tab插件
- c#程序员和java薪酬_语言趋势和薪水:Java的未来之路
- Number of Triplets
- 百万美元“未来科技大奖”揭晓:山东大学彭实戈教授荣获数学与计算机科学奖-547。
- 笔记本自带键盘失效问题
- 内网渗透-代理篇(reGeorg+Proxifier代理工具)
- 接触角测量方法的发展
- 0521 HTML基础
- MFS-学习总结(基础概念)