利用proxy_pass做正向代理

  server {
      listen       8001;
      server_name  localhost;
      #charset koi8-r;

      resolver 8.8.8.8;
      location / {
           proxy_pass $scheme://$host$request_uri;
      }
   }
~

代理服务器

缓冲区

语法:proxy_buffering on | off;
默认:proxy_buffering on;
作用:http,server,location

扩展:proxy_buffer_sizeproxy_buffersproxy_busy_buffers_size

跳转重定向

语法:proxy_redirect

解决反响代理获取真实IP的问题

  • 语法:proxy_set_header field value;
  • 默认:proxy_set_header host $proxy_host;
  • proxy_set_header connection close;
  • 作用域:http,server,location

其他扩展:proxy_hide_header,proxy_set_body

超时 –链接超时.读取超时,发送超时

  • 语法:proxy_connect_timeout time;
  • 默认:proxy_connect_timeout 60s;
  • 作用域:http,server,location.

proxy_read_timeout、proxy_send_timeout,

location /{

   proxy_pass http://your_backend_server;
   proxy_set_header X-Forwarded-Host $host;
   proxy_set_header X-Forwarded-Proto $scheme;  #获取你的协议
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;  #解决反向代理获取真实IP的问题

   proxy_connect_timeout 30;
   proxy_send_timeout 60;
   proxy_read_timeout 60;
  
   proxy_buffer_size 32k;
   proxy_buffering on;
   proxy_buffers 4 128k;
   proxy_busy_buffers_size 256k;
   proxy_max_temp_file_size 256k;
 
}

负载均衡

proxy_pass + upstream 来配置服务器

upstream 要求配置在server以外

upsteam dd{
  server 121.127.252.8:8001;
  server 121.127.252.8:8002;
  server 121.127.252.8:8003;
 
} 默认轮询方式

upstream举例

upstream backend{
    server http://www.solo365.cn weight=5; 可以http方式 weight是权重
    server backend2.example.com:8080;
    server unix:/tmp/backend3;

    server backup1.example.com:8080 backup;
    server backup2.example.com:8080 backup;
}

down 当前的server暂时不参与负载均衡
backup 预留的备份服务器
max_fails 允许请求失败的次数
fail_timeout 经过max_fails失败后,服务暂停的时间
max_conns 限制最大的接收的链接数

upstream dd {
  server 121.127.252.9:8001 down;
  server 121.127.252.9:8002 backup;
  server 121.127.252.9:8003 max_fails=1 fail_timeout=10s;
}

正常运行,只能进入server:8003 如果用Iptables把8003端口禁止访问,这样会启动8002的server.fail_timeout是超时10s

负载均衡调度算法

ip_hash 每个请求按照客户端访问IP的hash结果分配,这样来自同一个IP的固定方位一个后端的服务器,(这样可以解决服务器端session和cookie问题,如果把session存在一个服务器里面,这可以忽略)。

ieast_conn最少连接数,那个机器连接数少就分发.

url_hash 按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器

hash关键数值 hash自定义的key

轮询 按时间循序逐一分配到不同的后端服务器

加权伦询 weight值越大,分配到的访问机率越高

upstream dd{
  ip_hash;   //缺陷,如果,服务器进行缓存,那么每个用户缓存的内容可能出现不一致
  server 192.168.100.11;
  server 192.168.100.12;
  server 192.168.100.13;

}
upstream dd{
  hash $request_uri;
  server 192.168.100.11;
  server 192.168.100.12;
  server 192.168.100.13;

}
Last modification:May 22, 2024
如果觉得我的文章对你有用,请随意赞赏