分析Nginx是如何实现反向代理和负载均衡
nginx介绍
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
特点: 占有内存少 不超过2M ,并发能力强 3-5万次/秒
注意事项: 在安装Nginx过程中, Nginx的安装目录 不要装到C盘,并且路径不要有中文 空格 及系统目录.
安装完成后安装目录中有nginx.exe文件, 点击启动就可以了. 这里会弹一个命令窗口,然后立即就会消失,这不是程序启动的问题;
当我们可以观察资源管理器, 就会发现nginx已经启动了
我们发现有两个nginx.exe正在运行: 内存占用大的是主进程. 内存占用小的是守护进程;
当我们需要手动关闭nginx时,需要先关闭守护进程,之后再关闭主进程;
Nginx 启动后,可以访问网址: localhost:80 将会给我们一个欢迎界面
关于nginx 操作命令
命令执行位置: 执行命令时需要在nginx的根目录中执行.之后地址栏中 键入 cmd进入dos命令创建中
启动命令 start nginx
重启命令 nginx -s reload
关闭命令 nginx -s stop
Nginx实现反向代理:
什么是反向代理<重点>
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
特点:
- 反向代理服务器位于用户和目标服务器之间.
- 反向代理服务器就相当于目标服务器.(用户以为代理服务器就是真实服务器)
- 用户通过反向代理服务器获取资源 而不是直接访问真实服务器.
- 用户不清楚真实的服务器到底是谁.
- 反向代理是服务器端代理.保护真实服务器信息.
特征: 用户不清楚真实目标服务器是谁.
Nginx反向代理配置
http {#http协议内,可以有多个服务 每个服务就是一个serverserver {# 监听用户访问的端口 默认是80端口listen 80; # server_name 服务名称 浏览器的访问域名server_name localhost;#配置反向代理的实现 / 拦截所有的用户请求location / {# root代表关键字 代表反向代理的目录root html;# index 代表默认的访问页面index index.html index.htm;}}}
反向代理使用说明:
1.url地址: http://image.jt.com/2020/08/07/xxxx.png
2.本地磁盘地址:D:\JTSOFT\images/2020/08/07/xxxxpng
目的:通过域名访问真实的磁盘地址.
可以利用nginx的反向代理完成配置.
编辑Nginx配置文件
# 配置图片服务器server {listen 80;server_name image.jt.com;##通过网址转向指定的目录 注意/的写法location / {root D:/JT-SOFT/images;}}
修改HOSTS文件
说明: 每个操作系统针对开发人员,在本地都会有一个hosts文件可以编辑.
windows: C:\Windows\System32\drivers\etc
利用工具软件管理HOSTS文件:
京淘配置
#左侧写IP地址 右侧写域名 中间使用空格分隔 配置内容
127.0.0.1 image.jt.com
127.0.0.1 manager.jt.com
127.0.0.1 www.jt.com
127.0.0.1 sso.jt.com
nginx域名代理
要求:用户通过http://manager.jt.com的方式 访问localhost:8091的服务器.
利用反向代理的方式实现该功能.
配置nginx
# 商品管理服务器 监听的是用户 manager.jt.com:80 映射的是url地址server {listen 80;server_name manager.jt.com;#进行反向代理location / {#映射的url请求网址.proxy_pass http://localhost:8091;} }
访问效果
Nginx负载均衡原理
Nginx 集群搭建
说明: 要求启动3台服务器,运行jt-manager项目 端口号分别为8081/8082/8083, 通过/getPort请求,获取当前服务器端口号信息并且字符串返回.
动态获取当前服务器端口号
目的:为了能够在以后的负载均衡访问时看到自己访问的服务器到底是谁.
package com.jt.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PortController {//考点:动态复制操作@Value("${server.port}")private Integer port;@RequestMapping("/getPort")public String getPort(){return "当前访问的端口号:"+port;}
}
发布3台tomcat服务器
步骤:1.将项目打包 将项目先clean- build----install
步骤2.准备部署路径,之后将war包上传
3.利用命令运行服务器
4.访问测试
负载均衡的策略:
一:轮询策略:
说明: 根据nginx的配置文件,依次访问服务器.
# 商品管理服务器 监听的是用户 manager.jt.com:80 映射的是url地址server {listen 80;server_name manager.jt.com;#进行反向代理location / {#映射的url请求网址.#proxy_pass http://localhost:8091;proxy_pass http://jtWindows;} }#配置集群 1.默认方式 轮询策略upstream jtWindows {server localhost:8081;server localhost:8082;server localhost:8083;}
二:权重策略:
说明: 性能越高的服务器,则承担的压力也就越高.
#配置集群 1.默认方式 轮询策略 2.权重策略 upstream jtWindows {server localhost:8081 weight=6;server localhost:8082 weight=3;server localhost:8083 weight=1;}
三:IPHASH策略
需求: 有时在访问时可能会固定的访问某台服务器. 将用户与服务器进行绑定. 以后用户只能访问该服务器.
算法: IPHASH算法.
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略upstream jtWindows {ip_hash;server localhost:8081 weight=6;server localhost:8082 weight=3;server localhost:8083 weight=1;}
弊端:
- 用户与服务器进行绑定,当服务器宕机时则可能影响用户的使用.
- 由于访问是通过算数计算的结果,可能导致严重的负载不均的现象.
Nginx 高级属性
一:down属性
说明:nginx在不做任何的配置时,无法感知服务器是否正常运行.所有会频繁的访问故障机.
解决方案: 可以利用down属性 来标识故障机
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略upstream jtWindows {#ip_hash; server localhost:8081 weight=6;server localhost:8081 down;server localhost:8082 ;server localhost:8083 ;}
二:备用机策略
说明:正常情况下一般服务器部署时需要准备几台服务器当做备用.正常的情况下该服务器不参与工作.只有当主机遇忙时/或者宕机时.该服务器才会工作.
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略upstream jtWindows {#ip_hash; server localhost:8081 weight=6;server localhost:8081 down;server localhost:8082 down;server localhost:8083 backup;}
三:nginx高可用配置
说明:当tomcat服务器宕机时,可以通过如下的配置,实现服务器的自动的切换.无需人为的干预.
配置信息:
fail_timeout=60s; 设定超时时间(定义一个周期)
max_fails=1 设定最大的访问失败次数.
#配置集群 1.默认方式 轮询策略 2.权重策略 3.IPhash策略upstream jtWindows {#ip_hash; server localhost:8081 weight=6;server localhost:8081 max_fails=1 fail_timeout=60s;server localhost:8082 max_fails=1 fail_timeout=60s;server localhost:8083 max_fails=1 fail_timeout=60s;}
配置说明:
如果nginx访问某台服务器时,如果该服务器访问失败,失败的次数达到最大失败次数时.在60秒之内,nginx不会再次访问故障机.直到下一个周期.
分析Nginx是如何实现反向代理和负载均衡相关推荐
- nginx和tomcat实现反向代理、负载均衡和session共享
这类的文章非常多,nginx和tomcat实现反向代理.负载均衡实现非常easy,能够參照http://blog.csdn.net/liuzhigang1237/article/details/888 ...
- Nginx简单入门与反向代理和负载均衡
什么是Nginx Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师伊戈尔•西索夫(Igor Sysoev)所开发,官方测 ...
- Nginx入门简介和反向代理、负载均衡、动静分离理解
场景 Nginx简介 Nginx ("engine x")是一个高性能的 HTTP 和反向代理服务器 特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页 ...
- nginx的重定向,反向代理以及负载均衡
试验环境: 本次试验中的服务器全用的是CentOS-6.4-x86_64操作系统: nginx服务器地址:192.168.80.10 客户端主机地址:192.168.80.1 软件包下载地址: hea ...
- 【Nginx 快速入门】反向代理、负载均衡、动静分离
一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此. 比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问了,好开心. 这时候你的网站用户非常少,不会存在高并发 ...
- 【Nginx 之一】Nginx初体验(反向代理、负载均衡、动静分离)
1. 概述 1.1 什么是Nginx Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数 ...
- Nginx安装手册,反向代理,负载均衡,keepalived高可用
Nginx安装手册 附件在下面 看附件中的 pdf 中的资料写的比较清晰: nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6. ...
- 使用Nginx实现服务器反向代理和负载均衡
前言 同事总问我Nginx做反向代理负载均衡的问题,因此特意留下一篇扫盲贴! 直接部署服务器的风险 假设,我开发了一个网站,然后买了一台Web服务器和一台数据库服务器,直接部署到公共网络上.如下图,网 ...
- Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例
场景 Nginx入门简介和反向代理.负载均衡.动静分离理解 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102790862 Ub ...
最新文章
- jetty java 实例_Maven+Jetty+Servlet 简单示例
- 判断网页pdf还是html,html5 – 如何知道PDF.JS是否完成渲染?
- android view getx 0,Android动画:解决通过View.getY()获取初始位置为0的问题
- paginatorhelper ajax,Bootstrap Paginator+PageHelper实现分页效果_蓝瞳_前端开发者
- 计算机如何驱动无线网络,win7焦头烂额的无线网卡驱动程序安装问题!求帮助!...
- 加入karia2开源项目
- 西门子S7-200 SMART编程软件下载
- 前端——》antdv根据拼音过滤select选择器的选项
- Kali内Nmap端口扫描与高级扫描
- 如何使用群发工具?邮件群发软件免费有哪些?
- 悟以往之不谏,知来者之可追~
- 2020个人网站搭建指南(华为云+wordpress)
- SIP语音对讲从零到整之(一)sip介绍
- 影视公司触网意在大数据
- 【转载】《天下粮仓》
- Fragment的基本用法
- matlab绘画三维图形(三)
- openwrt.img固件转EXSI硬盘文件(超详细)
- DevCloud加持下的青软,让教育“智”上云端
- matlab获得solve得到的值,matlab solve函数赋值方程组
热门文章
- 【易通慧谷】供应链金融主要模式及对商业银行的影响
- 联发科嵌入式实习面经
- 科比自传读后感 --曼巴精神
- android volte功能,VOLTE功能介绍
- 计算机音乐数字乐谱青芒,牵丝戏 - 青芒Qimo - 5SING中国原创音乐基地
- Android Studio《一行代码》3.3.4 百分比布局
- wifi 信号差 android,手机WiFi信号弱怎么办 手机WiFi信号突然变弱的解决方法
- SaaS Metrics 2.0 – A Guide to Measuring and Improving what Matters
- linux环境下运行flex,什么是flex?
- JAVA IO(BIA)总结