摘要:本文从Nginx的概念出发,分别从反向代理的概念、优点、配置代码3个方面介绍了Nginx的特性之一反向代理。程序员
文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 周恒《Nginx的细枝末节》浏览器
分享者:宜信支付结算八方数据团队高级技术经理 周恒缓存
原文首发于支付结算技术团队公号:野指针安全
对于新事物的理解,最好的方式就是从概念入手,本文做为《Nginx专题》系列文章的第一篇,先从Nginx的名称开始来分解这个神秘的引擎。服务器
Nginx,是engine X的缩写,发音也是'engine x',2004年由俄罗斯大神伊戈尔·赛索耶夫开发,提供了高性能而易用的HTTP反向代理功能。后期还加入了TCP的反向代理支持。网络
最初Nginx是为了解决早年的C10K问题而生的。什么是C10K呢?C表明Client客户、10K表明10000,即一台服务器同时保持1万连接。这在当时是一个很是棘手的问题。负载均衡
经过Google搜索Nginx会获得如下解释:框架
Nginx是异步框架的网页服务器,也能够用做反向代理、负载平衡器和HTTP缓存。异步
从这句话中,咱们能够获得下面几个关键:性能
本专题文章将分别从这几个关键词来解读Nginx的强大之处。本文先介绍Nginx特性之反向代理及其配置实现。
代理在生活中很是常见,房屋中介是代理、终端零售是代理、选举表明是代理。这些代理均可以帮助需求方减轻不少工做的复杂度,提高效率和体验。
网络里的代理服务是什么样子,我想各位读者也很是清楚,这里再简单回顾一下:假设咱们想在公司上网看B站的视频,而规范的公司出于安全和办公效率的考虑,设置了网络策略,不容许访问视频网站,聪明的程序员不可能被这些事情所战胜,只要购买一台云服务,搭建代理服务,把浏览器设置上代理,就能够轻松访问视频网站。这就是常见的代理。
那么如今问题来了:“代理”你们都懂,这里为何强调是反向代理呢?难道还有正向代理?答案是确定的。
正向代理就是你们常见的代理,以请求端也就是客户端的角度为正向,用户发出请求通过的代理,称为“正向代理”。这时是用户主动选择使用代理。
反向代理:先看图再解释。
主动权被反转,原来是客户端选择代理,如今是代理选择服务端节点。因为控制权的反转,这样的代理被称为“反向代理”。
1)保护服务安全
2)服务节点更专一于业务,同时提高性能
正是因为Ngxin引入了反向代理的特性,让请求和响应都要通过Nginx,所以给Nginx带来了很是多的可能。好比负载均衡、HTTP缓存等。
Nginx中关于反向代理的配置至关简单。
# simple reverse-proxy server { listen 80; server_name big.server.com; access_log logs/big.server.access.log main; # pass requests for dynamic content to rails/turbogears/zope, et al location / { proxy_pass http://127.0.0.1:8080; } }
这里定义的规则是以big.server.com域名来请求Nginx的80端口,会将请求代理到127.0.0.1:8080上。
1)配置一组反向代理并命名。
upstream big_server_com { server 192.168.0.1:8000; server 192.168.0.1:8001; }
这里定义了upstream,这个upstream能够理解为上传流,之因此叫上传是由于:从服务器获取数据叫下载,向服务器发送数据就叫上传,这里是将数据请求发送到服务节点,因此叫上传。
给这组服务节点命名为big_server_com,其中包括两个节点,分别是:192.168.0.1:8000和192.168.0.1:8001。
2)配置规则:让知足的请求可以反向代理到这组服务节点中。
server { listen 80; server_name big.server.com; access_log logs/big.server.access.log main; location / { proxy_pass http://big_server_com; } }
这里定义的规则是以big.server.com域名来请求Nginx的80端口,请求url是以/为后缀的全部请求,都会转发到前面定义的名字为big_server_com的服务节点组。
本文从Nginx的概念出发,分别从反向代理的概念、优点、配置代码3个方面介绍了Nginx的特性之一反向代理。后续文章将继续介绍Nginx的另外三个特性:负载均衡、HTTP缓存、异步框架,敬请期待。