在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
反向代理 反向代理指的是以代理服务器接收用户的的访问请求,代理用户向内部服务器重新发起请求,最后把内部服务器的响应信息返回给用户。这样,代理服务器对外就表现为一台服务器,而访问内部服务器的客户端用的就是代理服务器,而不是真实网站访问用户。 为什么使用反向代理
反向代理例子 环境说明 假如有AB两个服务器。A服务器提供web资源,并且只给内网访问。B服务器有两块网卡,一块与A服务器在一个内网,以块是外网。此时,用户C想直接访问A服务器是行不通的。这时就可以通过B服务器代理用户C的请求去访问A服务器了。
配置虚拟主机 moli-04机器上编辑虚拟主机配置文件,内容如下: [root@moli-04 extra]$ cat blog.syushin.org.conf server{ listen 80; server_name blog.syushin.org; location / { proxy_pass http://192.168.30.7; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 更改hosts文件 windows上修改hosts文件,添加配置 192.168.93.129 blog.syushin.org 浏览器测试 访问地址是192.168.93.129,出现的界面的05机器的页面,配置成功。 负载均衡 负载均衡的功能
负载均衡集群在运行时,一般是通过一个或者多个前端负载均衡器将客户访问请求发到后端的一组服务器上。 Nginx负载均衡 严格来说,Nginx仅仅是作为Nginx Proxy反向代理的使用的,但是因为这个反向代理功能表现的效果是负载均衡机器的效果,因此nginx负载均衡是特殊的反向代理。 实现Nginx负载均衡的主要组件:
upstream模块介绍 ngx_http_upstream_module模块支持的代理方式有proxy_pass,fastcgi_pass等,主要使用proxy_pass。 upstream模块允许nginx定义一组或多组节点服务器组,使用时通过proxy_pass代理把网站的请求发送到定义好的对应的节点组中。 示例:创建节点服务器池 upstream blog { server 192.168.30.5:80 weight=5; server 192.168.30.6:81 weight=10; server 192.168.30.7:82 weight=15; }
设置节点服务器的状态值除了weight之外,还有: 使用域名的upstream upstream blog2{ server www.syushin.com weight=5; server blog.syushin.org down; server blog.syushin.cc backup; } 调度算法 rr轮询(默认调度算法,静态调度算法) 按客户端请求顺序把客户端的请求逐一分配到不同的后端节点服务器。 wrr(权重轮询,静态调度算法) 在rr轮询的基础上加上权重,使用该算法的时候,权重和用户访问成正比,权重值越大,被转发的请求就越多。 upstream pools{ server 10.0.0.1 weight=1; server 10.0.0.2 weight=2; } ip_hash(静态调度算法) 每个请求按客户端IP的hash结果分配,当新的请求到达,先将客户端IP通过哈希算法哈希出一个值,在随后的分配客户端请求中,客户IP的哈希值只要相同,就会被分配到同一台服务器。 upstream blog_pool{ ip_hash; server 192.168.30.5:80; server 192.168.30.6:8090; } 注意:当使用ip_hash时,不能有weight和backup。 least_conn算法 least_conn算法会根据后端服务器的连接数来觉得分配情况,哪台服务器连接数最少就分发多的请求。 调度算法除了上面所列的(常用)还有很多,就不一一列举了。 http_proxy_module模块 http_proxy_module可以将请求转发到另外一台服务器,在反向代理中,会通过location功能匹配指定的URI,然后把收到符合匹配的URI的请求通过proxy_pass抛给定义好的upstream节点池。 http_proxy模块参数
proxy_pass使用 格式:proxy_pass URL; 示例如下:
URL可以是域名,IP地址也可以是socket文件。 对于proxy_pass的配置有几点需要注意:
示例2
示例3
示例4
假如server_name为blog.syushin.com,当请求http://blog.syushin.com/uploa...,上面示例1-4的请求结果是:
好了,这篇文章就介绍到这了,希望大家以后多多支持极客世界。 |
请发表评论