一、简介
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对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
查看评论