1、正向代理和反向代理的区别
正向代理是代理客户端去请求(客户端请求通过该代理服务器转发请求)
反向代理是代理服务端接受请求(客户端请求的是该代理服务器,代理服务器会把请求转发给被代理的服务器)
2、反向代理的特点
2.1 客户端这边的请求显示的响应头server为反向代理的服务器型号

3、nginx的配置
http {
#配置反向代理
upstream tomcatserver1 {
server localhost:8080;
}
#其中一个虚拟主机
server {
listen 80;
server_name localhost;
#开启日志时必须要设置日志格式
access_log logs/host.access.log format0;
#配置对根目录的访问 proxy_pass 为反向代理的配置
location / {
proxy_pass http://tomcatserver1;
proxy_set_header Host $host;#当后端服务器配置多个web站点时,该选项可以让服务器识别出具体要访问的是哪个站点,而不会将第一个站点作为默认站点传递给用户
proxy_set_header X-Real-IP $remote_addr;#将客户端的ip赋值到X-Real-IP消息头上
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
}
}
设置为反向代理后需要注意一些细节,如下:
//servlet处理
String nginx_ip= request.getRemoteAddr();//ip为nginx的ip,而不是客户端ip
String client_ip=request.getHeader("X-Real-IP");//获取客户端ip的方式
4、设置集群
1、采用默认的轮询方式(每个请求会依次分配)
http {
upstream tomcatserver1 {
server 192.168.2.200:8080;
server 192.168.2.201:8080;
}
}
upstream模块常用参数说明:
1、down 表示当前的服务器不工作
2、backup 表示为备用服务器,集群高负载时才会来请求备用服务器。所以负载最低
3、weight 表示负载的权重,默认为1
4、max_fails=2 默认为1。某台Server允许请求失败的次数,超过最大次数后,在fail_timeout时间内,新的请求将不会分配给这台机器。如果设置为0,Nginx会将这台Server置为永久无效状态,然后将请求发给定义了proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, scgi_next_upstream, and memcached_next_upstream指令来处理这次错误的请求。
5、fail_timeout=10s 失败超时时间,默认是10秒,通常3s左右比较合适,某台Server达到max_fails次失败请求后,在fail_timeout期间内,nginx会认为这台Server暂时不可用,不会将请求分配给它
http {
#weight越大,负载的权重就越大。用于后端服务器性能不均的情况
upstream tomcatserver1 {
server 192.168.2.200:8080 max_fails=3 fail_timeout=3s weight=3;
server 192.168.2.201:8080 max_fails=3 fail_timeout=3s;
server 192.168.2.202:8080 backup;
}
}
通过配置192.168.2.202这台备用服务器可以实现系统的高可用,当主服务挂掉后,backup服务器会自动接管服务,当主服务恢复后,backup也会自动放弃服务
2、按照IP的Hash值来实现负载均衡
weight\backup 不能和 ip_hash 关键字一起使用
这个方式可以解决session不能跨服务器的问题。但如果后端服务器down掉,要手工down掉。
http {
upstream tomcatserver1 {
ip_hash;#采用IP HASH算法
server 192.168.2.200:8080;
server 192.168.2.201:8080;
}
}
网友评论