反向代理与负载均衡的概念:

Nginx仅仅是作为nginx proxy反向代理使用,nginx其实是反向代理,只不过是有负载均衡的功能!

安装Nginx负载均衡

官网Nginx模块讲解

模块详解

upstream模块

upstream www {         #upstream是关键字,必须要写,后面的www是一个群组名字,自己起名
server 192.168.70.127:80 weight=1;   #  server固定关键字,后面可以接域名或者IP,如果不指定端口默认80.

#weight权重,数值越大被分配的请求越多,结尾有分号
server 192.168.70.126:80 weight=1 bakup;#bakcup相当于热备

server 192.168.79.128:80 weight=1 max_fails=2 fail_timeout=20s;#max_fails尝试连接后端主机失败的次数,这个值配合 proxy_next_upstream、                                                                                                                fastcgi_next_upstream和memcached_next_upstream这三个参数来使用。根据需求配置,不要太大建议1-3次

fail_timeout=20s 失败秒数,在达到max_fails尝试连接失败次数后,休息20秒,在次连接默认10秒,建议2-3秒

}

upstream模块调度算法

调度算法一份分为两类:

  第一类  静态调度算法

        分配的时候,不需要考虑后端节点服务器的情况(rr, wrr, ip_hash调度算法)

第二类   动态调度算法

        根据自身的情况调度,根据后端节点状态是否响应很快进行调度(least_conn,fair等)

静态调度算法

  rr轮询(默认调度算法)

按照客户端请求顺序把客户端的请求逐一分配到不同后端节点服务器

wrr权重轮序

在rr轮询算法的基础上加上权重,权重值越大,别转发的请求越多,可以根据服务器状态进行指定权重值大小

ip_hash

每个请求按照客户端IP的hash结果分配,新的请求到达时,先将客户端IP通过哈希算法哈希出一个值,在随后的的客户端请求中,客户IP的哈希值只要相同,就会被分配至同一台服务器,该调度算法可以解决动态网页的session共享问题,但是会导致请求分配不均

(在upstream里配置,如果是ip_hash,不能有weight和bakcup)

        upstream www{ip_hash:server xxxx}

动态调度算法

fair

fair算法会根据后端节点服务器的响应时间来分配请求,时间短的优先分配,必须下载nginx的相关模块upstream_fair

  upstream www{fair;server xxx;server xxx;}

least_conn

least_conn算法根据后端节点的连接数来决定分配情况,哪个机器连接数少就分发

url_hash算法(web cache)

和ip_hash类似,一般用于web缓存,根据访问URL的hash结果来分配请求的,每个URL定向到同一个后端服务器,后端服务器为缓存服务器时效果明显。

upstream www{

server xxxx

hash $request_uri;

hash_method crc32;

}

一致性hash算法

一致性hash算法一般用于代理后端业务为缓存服务(squid,memcached)的场景,通过将用户请求的URI或指定字符串进行计算,然后调度到后端服务器上,此后任何用户查找同一个RUI或者指定字符串都会被调度到这一台服务器上,此后后端的每个节点缓存的内容都是不同的。

http{upstream www{consistent_hash $request_uri;server xxxx id=1001  weigh=3;}}

http_proxy_module模块

proxy_pass转发代理

    location /name/ {

proxy_pass http://127.0.0.1/remote/;

}

相关参数

  • proxy_set_header     设置http请求header项传给后端服务器节点,可实现让代理后端服务器节点获取访问客户端用户真实IP地址 proxy_set_header Host  $host;
  • client_body_buffer_size  用于指定客户端请求主体缓冲区大小
  • proxy_connect_timeout   表示反向代理与后端节点服务器连接的超时时间
  • proxy_send_timeout        代理后端服务器的数据回传时间,在规定时间之内服务器必须传完所有数据,否则断开
  • proxy_read_timeout         设置nginx从代理的后端服务器获取信息时间,表示连接建立成功后,nginx等待后端服务器的响应时间
  • proxy_buffer_size     设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置大小
  • proxy_buffers              这是缓冲区的数量和大小,nginx从代理的后端服务器获取响应信息
  • proxy_busy_bufers_size  用于设置系统很忙时可以使用的proxy_buffers大小,官方推荐proxy_buffer*2
  • proxy_temp_file_write_size  临时缓存文件

反向代理重要参数

prox_pass http://server_pools;      通过proxy_pass功能把用户的请求转向到反向代理定义的upstream服务器

proxy_set_header Host $host;     在代理向后端服务器发送的http请求头中加入host字段信息,用于后端服务器配置有多个虚拟主机,可以识别那个虚拟主机

proxy_set_header X-Forwarded-For $remot_addr;  用于接收用户真实IP,而不是代理服务器ip

在配置文件里都会加上include proxy.conf;

在proxy.conf里增加参数,会显得干净

proxy_set_header Host  $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_connect_timeout 60;

proxy_send_timeout 60;

proxy_read_timeout 60;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

=========================NGINX--根据URL中的目录地址实现代理转发====================

当用户请求www.daxian.com/upload/xx地址的时候,实现由upload上传服务器池处理请求

当用户请求www.daxian.com/static/xx地址的时候,实现由静态服务器池处理请求

除此之外,对于其他访问请求,全部交给默认动态服务器请求

环境 131负载均衡   126nginx  127apache(服务器有限,127当两台服务器)

配置过程

在131nginx配置文件中添加

   upstream static_pools {server 192.168.70.127:80 weight=1;#apache}upstream upload_pools{server 192.168.70.127:8080 weight=1;}upstream default_pools{server 192.168.70.126:80 weight=1;#nginx}

server {
listen 80;
server_name www.daxian.com;
location / {
proxy_pass http://default_pools;
include proxy.conf;
}

location /static/ {
proxy_pass http://static_pools;
include proxy.conf;
}

location /upload/ {
proxy_pass http://upload_pools;
include proxy.conf;
}

}

 

配置apache

cd /application/apache/conf/extra/vim httpd-vhosts.conf <VirtualHost *:80>
ServerAdmin 2647@qq.com
DocumentRoot "/application/apache2.2.34/htdocs/www"
ServerName www.daxian.com
ServerAlias daxian.com
ErrorLog "logs/www-error_log"
CustomLog "logs/www-access_log" common
</VirtualHost><VirtualHost *:8080>
ServerAdmin 2647@qq.com
DocumentRoot "/application/apache2.2.34/htdocs/www8080"
ServerName www.daxian.com
ErrorLog "logs/www8080-error_log"
CustomLog "logs/www8080-access_log" common
</VirtualHost>增加监听端口8080
vim /application/apache/conf/httpd.confListen 80
Listen 8080
创建访问目录
mkdir -p /application/apache/htdocs/www8080echo www8080>/application/apache/htdocs/www8080/index.htmlcd /application/apache/htdocs/www/
mkdir static/echo static>index.html../../bin/apachectl restart

web01修改hosts

192.168.70.127 web02  www.daxian.com

进行测试

curl http://www.daxian.com
apachewww

curl http://www.daxian.com/static/
static

cd www8080

mkdir /upload/

cd /upload/

echo "upload">index.html

测试

curl http://www.daxian.com:8080/upload/
upload

验证结果

web01 修改hosts文件,将地址指向负载均衡器

192.168.70.131 lb01 www.daxian.com

ping www.daxian.com
PING lb-01 (192.168.70.131) 56(84) bytes of data.
64 bytes from lb-01 (192.168.70.131): icmp_seq=1 ttl=64 time=0.571 ms
64 bytes from lb-01 (192.168.70.131): icmp_seq=2 ttl=64 time=0.686 ms
64 bytes from lb-01 (192.168.70.131): icmp_seq=3 ttl=64 time=0.685 ms

测试

curl http://www.daxian.com
nginx wwww

curl http://www.daxian.com/static/
static

curl http://www.daxian.com/upload/
upload

============================nginx根据移动端转发============================

在7层负载均衡下不需要人为拆分域名,对外只需要用一个域名即可,通过获取用户请求中设备信息($http_user_agent获取)

vim nginx.conf

worker_processes 1;events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream android_pools {
server 192.168.70.127:80 weight=1; #apache
}
upstream iphone_pools {
server 192.168.70.127:8080 weight=1; } upstream pc_pools { server 192.168.70.126:80 weight=1; #nginx } server { listen 80; server_name www.daxian.com; location / { if ($http_user_agent ~* "android") { proxy_pass http://android_pools; } if ($http_user_agent ~* "iphone") { proxy_pass http://iphone_pools; } proxy_pass http://pc_pools; include proxy.conf; } } }

../sbin/nginx -s reload

局域网里就可以输入ip地址访问

安卓

http://192.168.70.131/static/

苹果

http://192.168.70.131/upload/

pc

http://192.168.70.131

转载于:https://www.cnblogs.com/sky00747/p/8628866.html

nginx的负载均衡模块详解相关推荐

  1. 思科ccna认证VRRP负载均衡技术详解

    在VRRP标准协议模式中,只有Master路由器可以转发报文,Backup路由器处于监听状态,无法转发报文.虽然创建多个备份组可以实现多个路由器之间的负载分担,但是局域网内的主机需要设置不同的网关,增 ...

  2. Nacos系列--权重(负载均衡)--作用/详解

    原文网址:Nacos系列--权重(负载均衡)--作用/详解_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Nacos的权重的用法,它是一种负载均衡的方法. 权重的含义 Nacos控制台可以设置 ...

  3. Linux下Nginx+多Tomcat负载均衡实现详解

    一.简介 [Nginx] 大名鼎鼎,麻雀虽小五脏俱全,它拥有小而稳且高效的特性.为目前大多数中小企业所使用.nginx可以做以下几件事: 反向代理 负载均衡 动静分离 网页.图片缓存 [Tomcat] ...

  4. nginx反向代理及负载均衡使用详解

    nginx反向代理及负载均衡使用说明 文章目录 nginx反向代理及负载均衡使用说明 集群介绍 负载均衡架构图 为什么要使用集群 集群种类 负载均衡概念说明 压力测试 反响代理概念说明 反向代理图解 ...

  5. Nginx四层负载均衡模块添加

    Nginx四层负载均衡 Nginx在1.9之后,增加了一个stream模块,用来实现四层协议的转发.代理.负载均衡等.stream模块的用法跟http的用法类似,允许我们配置一组TCP或者UDP等协议 ...

  6. linux搭建LVS+keepalive+nginx实现集群高性能负载均衡配置详解

    关于nginx配置tomcat实现负载均衡可参考http://blog.csdn.net/liqi_q/article/details/78063603 安装jdk可参考:http://blog.cs ...

  7. 分布式架构系列: 负载均衡技术详解 | 技术头条

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作者:ITFLY8 转自:架构师技术联 ...

  8. LVS负载均衡--知识详解

    一. 集群的概念 服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台服务器. 集群系统中的单个服务器通常 ...

  9. lvs实现负载均衡原理详解

    前言: LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,现在已经是 Linux标准内核的一部分.在Linux2.4内核以前, ...

最新文章

  1. 《文献检索》随感-2003年10月24日
  2. nacos config基本使用
  3. linux 打包压缩工具
  4. android5.1 init对rc文件解析执行顺序
  5. 分离Exchange的OWA和Microsoft-Server-Activesync手机访问
  6. 文献引用的标准格式_论文参考文献格式标准~建议收藏
  7. ArcGIS10.8中如何获取线状、面状数据的折点,并计算折点坐标?
  8. strcmp java_C语言中strcmp的实现原型
  9. php 增加mysql 索引,【PHP】为什么 MySQL 添加索引后就可以提高查询速度
  10. 编译原理:用lex/flex做词法分析
  11. 在nodejs项目装一个库的多个版本
  12. Matlab的循环语法
  13. 手机怎么压缩gif动图大小?推荐一款gif压缩的工具
  14. 多个excel工作簿合并_Excel多工作簿合并,只需一个简单的公式搞定
  15. php调用翻译,PHP调用有道词典翻译API实现翻译功能及代码
  16. Paperreading之五  Stacked Hourglass Networks(SHN)和源码阅读(PyTorch版本)
  17. 《游戏设计模式》学习笔记
  18. 硬件设计——MOS管实际应用详解
  19. FX3U控制松下服务器位置不准,三菱FX3UPLC如何控制松下伺服_.docx
  20. sql中的日期比较(年,月,日)

热门文章

  1. 【金猿投融展】齐治科技——数据中心安全管理领军者
  2. 测试人生 | 从底薪助理4.5k转行到软件测试工程师月薪13k,妹子成功逆袭
  3. Valgrind使用介绍
  4. 根据一堆数字判定下一个数字_坐在一堆数字黄金
  5. 计算机与计算机网络_让计算机承担责任
  6. 微商和微信营销遇到的问题 转载
  7. Java中this关键字和super关键字用法
  8. java环境变量设置.
  9. after::和before::的用法
  10. 面试-Senior Specialist for Devops-车企