SGTMS

做事情
我们是认真的
您的位置:SGTMS>速记>Nginx设置负载均衡

Nginx设置负载均衡

正文

如果dig命令没有则装# yum install -y bind-utils

# vi /usr/local/nginx/nginx.conf // 写入如下内容

#//名称可以定义
upstream myserver
{
#    使同一个用户保持在同一个机器上  (ip哈希算法)
    ip_hash;
    server 192.168.1.2:80;
    server 192.168.1.3:80;
}
server
{
#   定义监听端口域名
    listen 80;
    server_name www.baidu.com;
    location /
    {
    #/根据你上面的upstream  名称来定义
        proxy_pass      http://myserver;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

首先先验证下是否写对

# /usr/local/nginx/sbin/nginx -t 

然后重新加载(重启)

# /usr/local/nginx/sbin/nginx -s reload

负载均衡配置成功啦

其中upstream,在这里定义后端web server,可以是一个也可以多个,其中ip_hash为负载均衡算法,他表示根据ip地址吧请求分到不同的服务器上,每台客户端对应的服务器是固定的,比如A用户为1.1.1.1,b用户为2.2.2.2则A访问的时候会吧请求转发到第一个web server上,而b访问则会到第二台web server上,这种算法是比较常用的。

当然还有其他5种:

1、轮询算法(默认)

请求被平均调度给多个服务器处理

http {
  ...
  upstream myserver {
   server 192.168.1.2:8080;
   server 192.168.1.3:8080;
   ...
  }
  server {
  	  ...
	  location / {
	  	proxy_pass http://myserver;
	  }
  }
}

2、加权轮询算法

给要轮询的服务器配置权重

http {
	...
	upstream myserver {
	  server 192.168.1.2:8080 weight=10;
	  server 192.168.1.3:8080 weight=90;
	  ...
	}
	...
	server {
		...
		localtion / {
		  proxy_pass http://myserver;
		}
	}
}

3、最少连接数算法

此种方式nginx会将请求转发到当前连接数较少的服务器

http {
	...
	upstream myserver {
	  least_conn;
	  server 192.168.1.2:8080;
	  server 192.168.1.3:8080;
	  ...
	}
	...
	server {
	  ...
	  location / {
	    proxy_pass http://myserver;
	  }
	}
}

4、url_hash算法

将客户端url进行hash运算,然后将请求转发到相应的服务器,这种方式相同url会转发到同一个服务器

需要安装url_hash补丁

http {
  ...
  upstream myserver {
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
    ...
    hash $request_uri;
    hash_method crc32;
  }
  ...
  server {
    ...
    location / {
      proxy_pass http://myserver;
    }
  }
}

5、fair算法

优先选择响应时间最短的服务器

需要安装模块:nginx-upstream-fair-master

http {
  ...
  upstream myserver {
    fair;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
    ...
  }
  ...
  server {
    ...
    location / {
      proxy_pass http://myserver;
    }
  }
}

样式图片不加载解决

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
      expires      30d;
      error_log /dev/null;
      access_log /dev/null;
      #加上这句
      proxy_pass http://myserver; 
}
    
location ~ .*\.(js|css)?$
{
      expires      12h;
      error_log /dev/null;
      access_log /dev/null; 
      #加上这句
      proxy_pass http://myserver; 
}
本文最后更新于2022-7-28,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Nginx设置负载均衡》
文章链接: https://www.sgtms.com/shorthand/117.html
本站资源仅供个人学习交流,转载或者引用本文内容请注明来源及作者,不允许用于商业用途。
分享到:

相关推荐

网友评论抢沙发

路人甲 表情
Ctrl+Enter快速提交