Nginx反向代理&负载均衡

Nginx反向代理&负载均衡

  • Nginx反向代理
  • Nginx负载均衡

Nginx反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet上 的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

修改Nginx的配置文件nginx.conf,配置代理信息
listen: 监听的端口号
server_name: 监听的名称
location / : 监听localhost:80下的任意请求
proxy_pass: 将请求转发给http://localhost:8080
proxy_set_header: 设置请求头信息
因为nginx代理时,会将请求头中的Host信息丢失,因为设置请求头,加上Host信息

server {  
      listen      80;                                                        
      server_name  localhost;                                              
      client_max_body_size 1024M;

      location / {
          proxy_pass http://localhost:8080;
          proxy_set_header Host $host:$server_port;
      }
  } 

Nginx负载均衡

1、RR轮询(默认)
和上面的反向代理相同,只是这次代理给了指令http://test;,而指令test对应的是upstream test,里面有两个服务,这样情况下就会按照负载均衡算法,按规则访问其中的某个服务

默认的负载均衡算法为轮询,第一次访问localhost:8080,第二次访问server localhost:8081,第三次访问server localhost:8080… 按照先后顺序一个一个发送访问

upstream test {
      server localhost:8080;
      server localhost:8081;
  }
  server {
      listen      81;                                                        
      server_name  localhost;                                              
      client_max_body_size 1024M;

      location / {
          proxy_pass http://test;
          proxy_set_header Host $host:$server_port;
      }
  } 

2、权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况:访问10次中有9次是访问localhost:8080,1次是访问localhost:8081

upstream test {
     server localhost:8080 weight=9;
     server localhost:8081 weight=1;
 }

3、ip_hash
上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

upstream test {
     ip_hash;
     server localhost:8080;
     server localhost:8081;
 }

你可能感兴趣的:(Java,nginx,负载均衡,运维)