代理在生活中非常常见,房屋中介是代理、终端零售是代理、选举代表是代理。这些代理都可以帮助需求方减轻很多工作的复杂度,提升效率和体验。
网络里的代理服务是什么样子,我想各位读者也非常清楚,这里再简单回顾一下:假设我们想在公司上网看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 负载均衡→