利用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_size
、proxy_buffers
、proxy_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;
}