名词解释,网络搜索结果
正向代理(Forward Proxy):
客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理(Reverse Proxy):
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。
upstream节点的分配方式及配置说明
upstream resinserver{ # 定义负载均衡设备的Ip及设备状态 ip_hash; server 127.0.0.1:8000 down; server 127.0.0.1:8080 weight=10 fail_timeout=5; server 127.0.0.1:6801; server 127.0.0.1:6802 backup; } 设备的状态: 1.down 表示单前的server暂时不参与负载 2.weight 权重,默认为1。权值越高被分配到的几率越大 3.max_fails 许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 4.fail_timeout max_fails次失败后,暂停的时间。 5.backup 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 nginx支持同时设置多组的负载均衡,用来给不用的server来使用。 client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug client_body_temp_path 设置记录文件的目录 可以设置最多3层目录 location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡
下面开始简要的负载均衡配置:
负载均衡:多台服务器平均分担负载,不会因某台服务器的负载宕机而某台服务器闲置的情况,也会不会因某台宕机而影响业务。
实验所需环境
准备三台已安装了nginx服务的服务器: A服务器ip: 10.10.10.10(Master) B服务器ip: 10.10.10.11 C服务器ip: 10.10.10.12 测试域名: test.com 部署思路: A服务器作为主服务器,域名直接解析到A服务器上,由A服务器负载均衡到B和C服务器上 域名解析: 在要访问的Windows的hosts文件中加入: 10.10.10.10 test.com 首先确保三台服务都安装的相同版本或者版本差别不大的nginx服务并且启动,默认的nginx.conf文件
A主服务器的nginx.conf在http节点中加入如下代码
http { ...... ...... upstream MyServer { # 定义负载设备ip及其设备状态 server 10.10.10.11:80; # 做负载均衡的服务器地址B server 10.10.10.12:80; # 做负载均衡的服务器地址C } server { listen 80; location / { proxy_pass http://MyServer; # 指向上面设置反向代理转发的服务器 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ...... ...... } /usr/local/nginx/sbin/nginx -s reload # 保存后重启 nginx
B、C服务器nginx.conf在http节点中加入如下代码
http { ...... ...... server { listen 80; # 和A服务器中upstream中对应设置的server端口要相同 server_name test.com; # 域名 location / { root html; index index.html index.htm; } ...... ...... } /usr/local/nginx/sbin/nginx -s reload # 保存后重启 nginx
至此,简要的nginx负载已配置完毕,在添加了hosts的Windows主机上打开浏览器,输入http://test.com,就可以看到默认的index.html页面,刷新会在B/C服务器上负载轮询。
为了可以直观的查看2台负载,可以在修改B、C服务器的index.html默认文件,以此区别刷新页面的显示。同时也可以通过B、C服务器nginx的log日志查看访问记录
B服务器
C服务器
可以测试,分别把B、C的nginx服务stop,刷新页面是否正常,达到负载需求。
此时会发现A服务器只做了Master,负载分发,是否也可以提供服务呢。做如下设置后,就可以让ABC三台服务器做负载均衡
在A服务的nginx.conf 做如下设置,将A服务加入到upstream节点中,其它B、C服务器配置不变化
http { ..... ..... upstream MyServer { server 10.10.10.11:80; # 做负载均衡的服务器地址B server 10.10.10.12:80; # 做负载均衡的服务器地址C server 10.10.10.12:8081; # 做负载均衡的服务器地址A(添加A服务的地址) } server { listen 80; location / { proxy_pass http://MyServer; # 指向上面设置反向代理转发的服务器 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 8081; # 端口 server_name test.com; # 域名 location / { root html; index index.html index.htm; } } .... .... } /usr/local/nginx/sbin/nginx -s reload # 重启nginx
再刷新页面,此时就可以发现三台主机页面都已分别显示
A服务器
B服务器
C服务器