Nginx专题(1):Nginx之反向代理及配置
admin
2023-02-28 17:41:42
0

摘要:本文从Nginx的概念出发,分别从反向代理的概念、优势、配置代码3个方面介绍了Nginx的特性之一反向代理。

文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 周恒《Nginx的细枝末节》

分享者:宜信支付结算八方数据团队高级技术经理 周恒

原文首发于支付结算技术团队公号:野指针

一、Nginx概念解读

对于新事物的理解,最好的方式就是从概念入手,本文作为《Nginx专题》系列文章的第一篇,先从Nginx的名称开始来分解这个神秘的引擎。

Nginx,是engine X的缩写,发音也是'engine x',2004年由俄罗斯大神伊戈尔·赛索耶夫开发,提供了高性能而易用的HTTP反向代理功能。后期还加入了TCP的反向代理支持。

最初Nginx是为了解决早年的C10K问题而生的。什么是C10K呢?C代表Client客户、10K代表10000,即一台服务器同时保持1万链接。这在当时是一个非常棘手的问题。

通过Google搜索Nginx会得到以下解释:

Nginx是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。

从这句话中,我们可以得到下面几个关键:

  • 异步框架
  • 反向代理
  • 负载均衡
  • HTTP缓存

本专题文章将分别从这几个关键词来解读Nginx的强大之处。本文先介绍Nginx特性之反向代理及其配置实现。​

二、反向代理

2.1 什么是反向代理

代理在生活中非常常见,房屋中介是代理、终端零售是代理、选举代表是代理。这些代理都可以帮助需求方减轻很多工作的复杂度,提升效率和体验。

网络里的代理服务是什么样子,我想各位读者也非常清楚,这里再简单回顾一下:假设我们想在公司上网看B站的视频,而规范的公司出于安全和办公效率的考虑,设置了网络策略,不允许访问视频网站,聪明的程序员不可能被这些事情所打败,只要购买一台云服务,搭建代理服务,把浏览器设置上代理,就可以轻松访问视频网站。这就是常见的代理。

Nginx专题(1):Nginx之反向代理及配置

那么现在问题来了:“代理”大家都懂,这里为什么强调是反向代理呢?难道还有正向代理?答案是肯定的。

正向代理就是大家常见的代理,以请求端也就是客户端的角度为正向,用户发出请求经过的代理,称为“正向代理”。这时是用户主动选择使用代理。

反向代理:先看图再解释。

Nginx专题(1):Nginx之反向代理及配置

主动权被反转,原来是客户端选择代理,现在是代理选择服务端节点。由于控制权的反转,这样的代理被称为“反向代理”。

2.2 反向代理的优点

1)保护服务安全

  • 隐藏服务节点的IP;
  • 将服务节点置于防火墙之后,避免直接攻ji业务节点服务器。

2)服务节点更专注于业务,同时提升性能

  • 由于有反向代理的存在,可以让反向代理服务器去实现比如https、gzip压缩等与业务无关的功能;
  • 提供动静态分离,将静态文件发往静态服务器或本地文件系统,避免业务节点处理这些与业务无关的请求;
  • 提供缓存机制,将一些短时间内不会变化的动态内容,在反向代理服务器这层增加缓存,降低业务服务器的请求量;
  • 由于控制权在代理服务这边,完全可以根据服务节点的性能动态分配请求,做到服务节点性能最佳。

正是由于Ngxin引入了反向代理的特性,让请求和响应都要经过Nginx,因此给Nginx带来了非常多的可能。比如负载均衡、HTTP缓存等。

Nginx专题(1):Nginx之反向代理及配置

三、反向代理的配置

Nginx中关于反向代理的配置相当简单。

3.1 配置一个单节点的反向代理

# 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上。

3.2 配置一组反向代理的服务节点。

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缓存、异步框架,敬请期待。

相关内容

热门资讯

国家防总提升针对广东的应急响应... 今年第12号台风“红霞”已于7月25日早晨加强为台风级。预计,“红霞”将于25日夜间至26日早晨在香...
美媒爆猛料:两国首次直接袭击伊... 多名知情人士向美国《华尔街日报》透露,巴林和科威特在7月初对伊朗境内军事目标实施了秘密空袭,知情人士...
郑丽文:只有中国国民党可以确保... 据凤凰卫视报道,国民党今天(7月25日)举行“全代会”,党主席郑丽文与党内提名的县市长参选人一同造势...
透视上半年消费外贸外资走势 新华社北京7月23日电 题:稳中提质 韧性增强——透视上半年消费外贸外资走势新华社记者谢希瑶、王聿昊...
水龙头出水小怎么解决 水龙头出水小可能是由多种原因引起的,以下是一些常见的解决方法:1. 清洁水龙头:水龙头使用时间长了,...
小神童洗衣机启动后不出水直接洗 有可能是洗衣机的进水阀被烧坏了,需要换一个新的进水阀安装上即可。另外不建议自己擅自拆卸洗衣机内部进行...
祝贺景德镇! 海报制作:苗夏阳正在韩国釜山举行的联合国教科文组织第48届世界遗产大会25日通过决议将“景德镇手工瓷...
中央空调不制冷怎么办-中央空调... 中央空调,是电器股份有限公司主要产品之一,但是由于中央空调使用环境和使用方式的不同,在使用过程中就会...
空调不出水不制冷怎么回事 内罩长期不清洗,当然房间密封性差的话也会导致这种现象;其次就是外机问题,如果外机积满灰尘,会成空调制...
空调不出水,不制冷 原因有多种,可能是电源插头没有接牢、制冷剂不足、空调短时间休息间隙、空调滤网积灰等等。很多情况可以自...