1,本地虚拟机安装好环境,我的是lnmp,虚拟机访问正常(关于如何安装环境就不一一介绍,自行百度)

2,从第一台安装好的主机克隆三台虚拟机

如图:

my_linux为我的第一台主机,其他三台是克隆的(一主三辅)

主服务器:192.168.110.129

辅服务器:192.168.110.131

192.168.110.132

192.168.110.133

nginx 怎么负载sftp请求 nginx负载模式_nginx 怎么负载sftp请求


3,了解一下nginx负载的5种模式

nginx的负载均衡有5种模式:

1)、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)、fair (第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

5)、url_hash(第三方)

根据请求的url的hash值将请求分到不同的机器中,当后台服务器为缓存的时候效率高4,在本地host文件中配置测试域名

192.168.110.129 www.my_linux.com

5,在主服务器查找nginx.conf文件

打开:vim /usr/local/nginx/conf/nginx.conf

以下使用轮询方式负载

在配置文件中添加如图代码

nginx 怎么负载sftp请求 nginx负载模式_nginx 怎么负载sftp请求_02


本机加入轮询,另加一个端口8080,使用域名访问www.my_linux.com:8080访问正常

server{
 listen 8080;
 server_name www.my_linux.com;
 location / {
 root html;
 index index.html index.htm index.php;
 }
 }

使用轮询方式负载均衡

upstream www.my_linux.com {
      server 192.168.110.131:80;
      server 192.168.110.132:80;
      server 192.168.110.133:80;
      server 127.0.0.1:8080;
      }

注意:proxy_pass 后面域名和upstream 配置相同

location / {
        proxy_pass              http://www.my_linux.com;
        root   html;
        index  index.html index.htm index.php;
    }

保存退出:wq

重启nginx/usr/local/nginx/sbin/nginx -s reload

修改nginx下html文件,增加一行每台主机的ip

vim /usr/local/nginx/html/index.html

浏览器访问www.my_linux.com

如图:

nginx 怎么负载sftp请求 nginx负载模式_html_03


nginx 怎么负载sftp请求 nginx负载模式_nginx 怎么负载sftp请求_04


nginx 怎么负载sftp请求 nginx负载模式_nginx 怎么负载sftp请求_05


每刷新一次,ip都在变,说明轮询成功

权重负载代码,服务器性能越好,可分配更大权重。weight越大,被访问几率越大

upstream www.my_linux.com {
  server 192.168.110.129 weight=1;
  server 192.168.110.132 weight=2;
  server 192.168.110.131 weight=3;
  server 192.168.110.133 weight=4;
  }

ip_hash

upstream www.my_linux.com {
 ip_hash;
  server 192.168.110.131:80;
  server 192.168.110.132:80;
  server 192.168.110.133:80;
 }

fair

upstream www.my_linux.com{
    server 192.168.110.131;
    server 192.168.110.132;
    server 192.168.110.133;
    fair; 
}

url_hash

upstream www.my_linux.com {
  server 192.168.110.131:80;
  server 192.168.110.132:80;
  server 192.168.110.133:80;
  hash $request_uri;
  hash_method crc32;
 }

如下是访问php文件

在主服务器和从服务器建立index.php文件,分别输出当前服务器ip

需要去除nginx.conf配置文件里面对php解析处理的配置,因为在80这里配置,就会指向本服务器

如图:

nginx 怎么负载sftp请求 nginx负载模式_nginx 怎么负载sftp请求_06


再把注释掉的这部分代码加入到8080这个server里面

location ~ \.php$ {
  root            html;
  fastcgi_pass    127.0.0.1:9000;
  fastcgi_index   index.php;
  include         fastcgi.conf;
  }