【Web】Nginx 反向代理与负载均衡
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
  nginx反向代理工作流程如下:
  
  Nginx设置反向代理如下,在Nginx配置文件中配置
  
 server {
     #侦听的80端口
     listen       80;
     server_name  localhost;
     location / {
         proxy_pass   http://127.0.0.1:81;    #在这里设置一个代理
         #以下是一些反向代理的配置可删除
         proxy_redirect             off;
         #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
         proxy_set_header           Host $host;
         proxy_set_header           X-Real-IP $remote_addr;
         proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
         client_max_body_size       10m; #允许客户端请求的最大单文件字节数
         client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数
         proxy_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)
         proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)
         proxy_read_timeout         300; #连接成功后,后端服务器响应时间(代理接收超时)
         proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
         proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
         proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)
         proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
     }
 }
负载均衡
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
  Nginx负载均衡需要用到upstream模块。工作示意图如下:
  
nginx配置如下:
 upstream my_server_pool{
         server 192.168.7.7:80 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.7.8:80 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.7.9:80 weight=1 max_fails=2 fail_timeout=30s;
     }
 server {
     listen     80;
     server_name localhost;
     location / {
        proxy_pass http://my_server_pool;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
 }
负载均衡健康检查
一、默认负载均衡检查模块检查
nginx自带的针对后端节点健康检查的功能比较简单,通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。在Nginx的负载均衡检查模块中,对于负载均衡的节点可以配置如下可选参数参数
upstream tomcat_server {
    server 127.0.0.1:8080 max_fails=1 fail_timeout=10s;
    server 127.0.0.1:8081 max_fails=1 fail_timeout=10s;
}
这个是Nginx在负载均衡功能中,用于判断后端节点状态,所用到两个参数。
Nginx基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间,中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。
默认:fail_timeout为10s,max_fails为1次。
二、基于第三方模块upstream_check_module模块
nginx_upstream_check_module模块由淘宝团队开发 淘宝自己的 tengine 上是自带了该模块的
使用先要安装该模块,请自行度娘
配置
upstream tomcat_server {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    check interval=3000 rise=2 fall=5 timeout=1000;
}
上面配置的意思是,对tomcat_server这个负载均衡条目中的所有节点,每个3秒检测一次,请求2次正常则标记 realserver状态为up,如果检测 5 次都失败,则标记 realserver的状态为down,超时时间为1秒。
其中参数的定义如下:
interval:检查的周期
fall:允许的检查失败次数,若失败次数超过该值,则后端被标记为"down"。
rise:检查的成功次数达到该值,则后端被标记为“up”。
timeout:检查的超时时间。
type:后端检查的协议类型。
配置显示服务器的健康状态页面
配置路由规则
server {
    listen       80;
    server_name  1270.0.0。1;
    charset utf-8;
    location / {
        port_in_redirect on;
        proxy_pass      http://tomcat_server;
        proxy_redirect  off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /nstatus {
        check_status;
        access_log off;
    }
}
访问地址:http://127.0.0.1/nstatus,查看健康状态
  
【Web】Nginx 反向代理与负载均衡的更多相关文章
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
		
相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...
 - 基于Nginx反向代理及负载均衡
		
基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是 ...
 - Nginx反向代理、负载均衡及日志
		
Nginx反向代理.负载均衡及日志 1.原理图 2.正向代理与反向代理 (1)代理服务器 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后 ...
 - Nginx反向代理与负载均衡应用实践(二)
		
Nginx反向代理与负载均衡应用实践(二) 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App ...
 - Nginx反向代理与负载均衡应用实践(一)
		
Nginx反向代理与负载均衡应用实践(一) 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App ...
 - Nginx反向代理实现负载均衡配置图解
		
Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...
 - nginx反向代理与负载均衡
		
一:nginx反向代理与负载均衡配置思路与用法 1.nginx反向代理:就是你去相亲时,媒婆就是这里的代理,让媒婆带你去见姑娘 2.nginx负载均衡:就是有很多的媒婆经过商量给你选出最适合你的姑娘, ...
 - 【转】Nginx反向代理和负载均衡
		
原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...
 - 谁说前端不需要懂-Nginx反向代理与负载均衡
		
转:https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用 ...
 - [转]Nginx反向代理和负载均衡部署指南
		
Nginx反向代理和负载均衡部署指南 1. 安装 1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最 ...
 
随机推荐
- hibernate ORA-17059 无法转换为内部表示
			
参考 https://jingyan.baidu.com/article/2fb0ba40a25a2b00f2ec5fc7.html 数据库里的字段类型与Java实体类中的对应字段属性类型不匹配
 - centos磁盘满了,查找大文件并清理
			
今天发现vps敲入crontab -e 居然提示 “Disk quota exceeded” 无法编辑.于是"df -h"查了查发现系统磁盘空间使用100%了.最后定位到是/var ...
 - ucore-lab1-练习3report
			
练习3.分析bootload进入保护模式的过程 0. BIOS通过读取硬盘主引导扇区到内存,并跳转到对应内存中的位置,也就是从’%cs=0 $pc=0x7c00‘进入并执行bootloader,boo ...
 - linux下的C++项目创建
			
CMake项目的完整构建 Linux下的CMake项目通常由几个文件夹组成.小伙伴们可以先在自己的电脑上新建一个文件夹,作为你代码的根目录,然后往里面建几个子文件夹,这里并不涉及具体的代码,只是可以作 ...
 - TCL脚本语言基础介绍
			
Tcl简介(一):Tcl 语法 Tcl 语法 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦,这片文章对 Tcl有很好的描述和说明.如 ...
 - sourceforge
			
sourceforge SourceForge.net,又称SF.net,是开源软件开发者进行开发管理的集中式场所. SourceForge.net由VA Software提供主机,并运行Source ...
 - Delphi: Class Static Methods
			
在Delphi中,自Delphi 2007之后,支持static形式的class方法,样式比如: type TMyClass = class strict private class var FX: ...
 - eclipse配置mybatis xml文件自动提示(转)
			
原文链接 原文如下: 如果使用eclipse中,再写mybatis的xml文件的时候,没有提示,用“Alt+/”,不能把代码用快捷键敲出来,可以试试下面要说的这种方法,反正我试了,我这个可以. 1.下 ...
 - php 通过stomp协议连接ActiveMQ
			
一.安装php的stomp扩展 http://pecl.php.net/package/stomp 如:stomp-2.0.0.tgz > tar xf stomp-1.0.9.tgz > ...
 - Vue-CLI3.x  高版本覆盖低版本Vue-CLI2.x  解决方法
			
因为Vue-cli 3 和旧版使用了相同的vue命令,所以Vue CLI 2(vue-cli) 被覆盖了.如果你任然需要旧版本的 vue init 功能 ,你可以全局安装一个交接工具: npm ins ...