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_nameservern​amerequest_uri;

方式2:

自动匹配再跳转:

rewrite^(*)$ https://servernameserver_nameservern​amerequest_uri permanent;

结语

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

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

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

  1. 堆垛机器人编程技巧_两步变身老鸟,手把手教你提升ABB机器人编程技巧!(二)...

    原标题:两步变身老鸟,手把手教你提升ABB机器人编程技巧!(二) 1 双机器人与变位机编程 第一:如下图,双机器人+变位机系统,使用Multimove,(即一台控制器,一个示教器,三个运动任务) 第二 ...

  2. 手把手教你开发微信小程序中的插件

    继上次 手把手教你实现微信小程序中的自定义组件 已经有一段时间了(不了解的小伙伴建议去看看,因为插件很多内容跟组件相似),今年3月13日,小程序新增了 小程序**「插件」 功能,以及开发者工具新增 「 ...

  3. 手把手教你用plotly绘制excel中常见的16种图表(下)

    大家好,我是才哥. 上一期咱们介绍<手把手教你用plotly绘制excel中常见的16种图表(上)>演示了8种常见图表,今天我们继续演示另外8种常见图表的绘制. 文章目录 1. 树状图 2 ...

  4. 官方资源帖!手把手教你在TensorFlow 2.0中实现CycleGAN,推特上百赞

    铜灵 发自 凹非寺 量子位 出品| 公众号 QbitAI CycleGAN,一个可以将一张图像的特征迁移到另一张图像的酷算法,此前可以完成马变斑马.冬天变夏天.苹果变桔子等一颗赛艇的效果. 这行被顶会 ...

  5. 手把手教你搭建区块链(中)

    ​"学习区块链的最快方法就是自己亲手搭建一个" 本文接上篇:手把手教你搭建区块链(上) "了解工作量证明" 工作量证明算法(PoW)是在区块链上创建或挖掘新区块 ...

  6. 手把手教你用Python实现Excel中的Vlookup功能

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 像树一样成长. 一.前言 大家好, ...

  7. python爬取app聊天信息_手把手教你爬取手机app中的信息

    使用工具:Fiddler+基础爬虫 Fiddler是一个抓包神器,用来检查电脑和互联网之间所有的通讯内容,而且比较简单容易上手,显示的格式也比较友好. 网页基本都会爬了,现在开始要想想如何去爬手机ap ...

  8. 微信小程序轮播中的current_手把手教你美化微信小程序中的轮播效果

    微信小程序现在依然很火,相信大家有目共睹:所以作为前端开发者,掌握如何开发小程序,是一项必备技能了,你觉得呢? 相对于PC和H5开发,小程序坑很多,所以需要慢慢"踩",被坑多了,路 ...

  9. 手把手教你用plotly绘制excel中常见的8种图表

    最近不是在学习plotly嘛,为了方便理解,我们这里取excel绘图中常见的16种图表为例,分两期演示这些基础图表怎么用plotly进行绘制! 第一部分:柱状图.条形图.折线图.面积图.饼图与圆环图. ...

最新文章

  1. c java 的关系,c#与c、java的关系
  2. 解决push的时候有时候会卡一下的问题
  3. Android AIDL示例-回调方法版
  4. 程序启动报错:ORA-12505;PL/SQL却可以登录的解决方法
  5. python3.7.2安装教程-CentOS 7安装Python教程
  6. 变量和指针——学习笔记
  7. 利用Matlab拟合时序植被生长季曲线,并求解物候参数
  8. centos mysql_CentOS MySQL数据库备份工具mysqldump介绍
  9. c语言中char buffer,C语言对char*的封装,形成buffer
  10. 【转载】C# 中的各种命名规范
  11. java查询城市区号_中国城市电话区号对照表
  12. 在FireFox中使用IE Tab插件
  13. c#程序员和java薪酬_语言趋势和薪水:Java的未来之路
  14. Number of Triplets
  15. 百万美元“未来科技大奖”揭晓:山东大学彭实戈教授荣获数学与计算机科学奖-547。
  16. 笔记本自带键盘失效问题
  17. 内网渗透-代理篇(reGeorg+Proxifier代理工具)
  18. 接触角测量方法的发展
  19. 0521 HTML基础
  20. MFS-学习总结(基础概念)

热门文章

  1. 2519485c7dcfe0295a41d4e0f69bb10a 求解
  2. 如何跟程序员谈一场没有Bug的恋爱
  3. 面试之Java知识整理
  4. Java多线程之并发协作生产者消费者设计模式
  5. json loads No JSON object could be decoded 问题解决
  6. 有氧运动 无氧运动
  7. UVA 1622 Robot
  8. LoadRunner学习第四天——检查点学习(转载)
  9. 三网齐发 HTC One行货确定4月24日发布
  10. 项目杂记——在后台获取Repeater控件里面的控件