摘要:本文从Nginx的概念出发,分别从反向代理的概念,优势,配置代码3个方面介绍了Nginx的特性之一反向代理。
文章宜信技术学院,宜信支付结算团队技术分享第一期——宜信支付结算八方数据团队高级技术经理周恒《Nginx的细枝末节》
分享者:宜信支付结算八方数据团队高级技术经理周恒
原文首发于支付结算技术团队公号:野指针
引用>一、Nginx概念解读
对于新事物的理解,最好的方式就是从概念入手,本文作为《Nginx专题》系列文章的第一篇,先从Nginx的名称开始来分解这个神秘的引擎。
Nginx,是引擎X的缩写,发音也是“引擎X”, 2004年由俄罗斯大神伊戈尔·赛索耶夫开发,提供了高性能而易用的HTTP反向代理功能。后期还加入了TCP的反向代理支持。
最初Nginx是为了解决早年的C10K问题而生的。什么是C10K呢? C代表客户客户,10 k代表10000年,即一台服务器同时保持1万链接。这在当时是一个非常棘手的问题。
通过谷歌搜索Nginx会得到以下解释:
Nginx是异步框架的网页服务器,也可以用作反向代理,负载平衡器和HTTP缓存。
引用>从这句话中,我们可以得到下面几个关键:
<李>异步框架李> <李>反向代理李> <李>负载均衡李> <李> HTTP缓存李>
本专题文章将分别从这几个关键词来解读Nginx的强大之处。本文先介绍Nginx特性之反向代理及其配置实现。
二、反向代理
2.1什么是反向代理
代理在生活中非常常见,房屋中介是代理,终端零售是代理,选举代表是代理。这些代理都可以帮助需求方减轻很多工作的复杂度,提升效率和体验。
网络里的代理服务是什么样子,我想各位读者也非常清楚,这里再简单回顾一下:假设我们想在公司上网看B站的视频,而规范的公司出于安全和办公效率的考虑,设置了网络策略,不允许访问视频网站,聪明的程序员不可能被这些事情所打败,只要购买一台云服务,搭建代理服务,把浏览器设置上代理,就可以轻松访问视频网站。这就是常见的代理。
那么现在问题来了:“代理”大家都懂,这里为什么强调是反向代理呢?难道还有正向代理?答案是肯定的。
正向代理就是大家常见的代理,以请求端也就是客户端的角度为正,向用户发出请求经过的代理,称为“正向代理”。这时是用户主动选择使用代理。
反向代理:先看图再解释。
主动权被反转,原来是客户端选择代理,现在是代理选择服务端节点。由于控制权的反转,这样的代理被称为“反向代理”。
2.2反向代理的优点
<强> 1)保护服务安全强>
<李>隐藏服务节点的IP,李> <李>将服务节点置于防火墙之后,避免直接攻霁业务节点服务器。李>
2)服务节点更专注于业务,同时提升性能
<李>由于有反向代理的存在,可以让反向代理服务器去实现比如https, gzip压缩等与业务无关的功能,李> <李>提供动静态分离,将静态文件发往静态服务器或本地文件系统,避免业务节点处理这些与业务无关的请求;李> <李>提供缓存机制,将一些短时间内不会变化的动态内容,在反向代理服务器这层增加缓存,降低业务服务器的请求量;李> <李>由于控制权在代理服务这边,完全可以根据服务节点的性能动态分配请求,做到服务节点性能最佳。李>
正是由于Ngxin引入了反向代理的特性,让请求和响应都要经过Nginx,因此给Nginx带来了非常多的可能。比如负载均衡,HTTP缓存等。
三,反向代理的配置
Nginx中关于反向代理的配置相当简单。
3.1配置一个单节点的反向代理
<代码> #简单的反向代理 服务器{ 听80; server_name big.server.com;/big.server.access access_log日志。日志主要; #通过请求动态内容到rails/turbogears/zope,等 位置/{ proxy_pass http://127.0.0.1:8080; } }Nginx专题(1):Nginx之反向代理及配置