一、简介
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
二、集群配置
1. 负载均衡(ngx_http_upstream_module)
  
   - 
    
     
    
    
     
      upstream backend {
     
    
 
   - 
    
     
    
    
         
      server backend1.example.com:
      12345 weight=
      5;
     
    
 
   - 
    
     
    
    
         
      server 
      127.0
      .0
      .1:
      12345    max_fails=
      3  fail_timeout=
      30s;
     
    
 
   - 
    
     
    
    
         
      server unix:/tmp/backend2;
     
    
 
   - 
    
     
    
    
         
      server backup1.example.com:
      12345  backup;
     
    
 
   - 
    
     
    
    
     
      }
     
    
 
  
 
| 标签 | 说明 | 
|---|---|
| server | 负载均衡后面节点地址可以是IP或域名 | 
| weight | 调节服务器的请求分配权重 | 
| max_fails | 定义最大的失败次数 | 
| fail_timeout | 定义失败之后重发的间隔时间 | 
| check | 开启对该服务的健康检查 | 
| backup | 热备份参数 | 
| maxconn | 指定可并发发送到该服务器的最大并发连接数 | 
| fall | 指定多少次不成功的健康检查后,即认为服务器为宕机状态 | 
| inter | 设置连续两次检查的间隔时间,单位毫秒 | 
| rise | 指定多少次连续成功的检查后,即认定该服务器处于可用状 | 
2. 反向代理(ngx_http_proxy_module)
  
   - 
    
     
    
    
     
      server {
     
    
 
   - 
    
     
    
    
     
          listen       
      80;
     
    
 
   - 
    
     
    
    
     
          server_name  www.southbay.com;
     
    
 
   - 
    
     
    
    
     
          location / {
     
    
 
   - 
    
     
    
    
     
             proxy_pass http:
      //backend;
     
    
 
   - 
    
     
    
    
     
             proxy_set_header Host $host; 
     
    
 
   - 
    
     
    
    
     
             proxy_set_header X-Forwarded-
      For $remote_addr;
     
    
 
   - 
    
     
    
    
     
             proxy_next_upstream error timeout http_404 http_502 http_403;
     
    
 
   - 
    
     
    
    
     
          }
     
    
 
   - 
    
     
    
    
     
      }
     
    
 
  
 
| 参数 | 说明 | 
|---|---|
| proxy_set_header | 设置反向代理向后端发送的请求头信息 | 
| proxy_buffer_size | 设置size用于读取从代理服务器接收到的响应的第一部分的缓冲区的 |  
   
| proxy_connect_timeout | 定义后端节点与代理服务器建立连接的超时时间 | 
| proxy_send_timeout | 设置将请求传输到代理服务器的超时时间 | 
| proxy_read_timeout | 用于从代理的后端服务器读取响应时间 | 
| proxy_busy_buffers_size | 用于设置系统很忙时可以使用proxy_buffers大小,推荐大小proxy_buffers*2 | 
| proxy_buffers | 设置缓冲区的数量和大小 | 
| proxy_temp_file_write_size | 指定proxy缓存临时文件的大小 | 
在代理向后端服务器发送HTTP请求头中加入host字段信息后,若后端服务器配置有多个虚拟主机,他就可以识别代理的是那个虚拟主机。这是节点服务器多虚拟主机时的关键配置。
proxy_set_header Host $host; 
 
在反向代理请求后端节点服务器的请求头中增加获取的客户端ip字段信息,然后节点后端可以通过程序或者相关配置接收X-Forwarded-For传过来的真实用户IP信息。
proxy_set_header X-Forwarded-For $remote_addr; 
3. 根据用户设备转发($http_user_agent)
  
   - 
    
     
    
    
     
      location / {
     
    
 
   - 
    
     
    
    
        
      if ($http_user_agent ~* iphone) {
     
    
 
   - 
    
     
    
    
     
             proxy_pass http:
      //mobile;
     
    
 
   - 
    
     
    
    
     
         }
     
    
 
   - 
    
     
    
    
        
      if ($http_user_agent ~* Chrome) {
     
    
 
   - 
    
     
    
    
     
             proxy_pass  http:
      //web;
     
    
 
   - 
    
     
    
    
     
         }
     
    
 
   - 
    
     
    
    
     
         proxy_pass http:
      //default;
     
    
 
   - 
    
     
    
    
     
         proxy_set_header Host $host;
     
    
 
   - 
    
     
    
    
     
         proxy_set_header X-Forwarded-
      For $remote_addr;
     
    
 
   - 
    
     
    
    
     
         proxy_next_upstream error timeout http_404 http_502 http_403;
     
    
 
   - 
    
     
    
    
     
      }
     
    
 
  
 
转载:https://blog.csdn.net/South_Bay/article/details/104538189
查看评论