目录:

(1)Nginx-静态资源网站部署

(2)Nginx-location匹配规则

(3)负载均衡

(4)Nginx-负载均衡环境准备

(5)Nginx-负载均衡案例

(6)Nginx负载均衡案例-MyWeb-4种负载均衡-2个其他参数


Nginx主要应用

  • 静态网站部署
  • 负载均衡
  • 静态代理
  • 动静分离
  • 虚拟主机

后面的章节主要围绕这几个应用进行展开

(1)Nginx-静态资源网站部署

Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端

上传项目:

先下载unzip:

然后进行解压:

这个文件里面的内容是:

通过把这个案例项目部署到Linux当中,然后通过Nginx进行远程的访问

不能把项目放到root下面,root下面访问时需要权限的:需要创建一个目录存放这个项目:

 

进入nginx的目录复制一份配置文件:

vim的安装命令:

修改配置文件:访问的页面:

启动nginx:先用-t检查一下语法

在浏览器输入地址进行访问:访问的时候不能加项目名:

加项目明访问报错:

然而在很多访问过程中带着项目名的,这时候需要继续更改配置文件,添加访问规则:

在单击情况下,可以使用命令重启nginx,但是在搭建nginx集群的情况不能使用命令重启了:

现在访问就可以访问到了:

 (2)Nginx-location匹配规则

初次接触:可能会遇到404找不到页面的错误,主要原因是配置路径问题;

规则:ip + port 等于 root,假设server的配置如下:

server {

listen 80; #端口号

location / {

root /opt/static /ace; #静态文件路径

}

}

替换:

http://192.168.92.128:80/ = root = /opt/static/ace

http://192.168.92.128:80/ace = root/ace = /opt/static/ace/ace

location匹配顺序

在没有标识符的请求下,匹配规则如下:

1、nginx服务器首先在server块的多个location块中搜索是否有标准的uri和请求字符串匹配。如果有多个标准uri可以匹配,就匹配其中匹配度最高的一个location。

2、然后,nginx在使用location块中,正则uri和请求字符串,进行匹配。如果正则匹配成功,则结束匹配,并使用这个location处理请求;如果正则匹配失败,则使用标准uri中,匹配度最高的location。

备注:

1、如果有精确匹配,会先进行精确匹配,匹配成功,立刻返回结果。

2、普通匹配与顺序无关,因为按照匹配的长短来取匹配结果。

3、正则匹配与顺序有关,因为是从上往下匹配。(首先匹配,就结束解析过程)

4、在location中,有一种统配的location,所有的请求,都可以匹配,如下:

location  / {

  # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求

  # 但是正则和最长字符串会优先匹配

}

结合标识符,匹配顺序如下:

(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

(精确匹配)> (最长字符串匹配,但完全匹配) >(非正则匹配)>(正则匹配)>(最长字符串匹配,不完全匹配)>(location通配)

(3)负载均衡

在网站创立初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

负载均衡实现方式:

硬件负载均衡

比如 F5、深信服、Array 等

优点是有厂商专业的技术服务团队提供支持,性能稳定

缺点是费用昂贵,对于规模较小的网络应用成本太高

软件负载均衡

比如 Nginx、LVS、HAProxy 等

优点是免费开源,成本低廉

Nginx负载均衡

Nginx通过在nginx.conf文件进行配置即可实现负载均衡,原理图:

配置如下:(配置2步即可)

A、在http模块加上upstream配置

upstream www.myweb.com {

server  127.0.0.1:9100 weight=3;

server  127.0.0.1:9200 weight=1;

}

其中weight=1表示权重,用于后端服务器性能不均的情况,访问比率约等于权重之比,权重越大访问机会越多

upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器

B、在server模块里添加location,并配置proxy_pass

location /myweb {

proxy_pass http://www.myweb.com;

}

其中 www.myweb.com 字符串要和 upstream 后面的字符串相等

 (4)Nginx-负载均衡环境准备

负载均衡就需要用到tomcat了,在omcat之前需要安转jdk

先上传jdk:

修改配置:

 

解压jdk:

source一下配置,查看版本,出现下面信息就代表环境变量配置成功了

下面安装tomcat:

解压:

tomcat复制3份:

分别修改他们的端口号:

首先更改第一台tomcat:

第一台配置文件只修改一处就可以:8080改为9001

启动tomcat:

编辑第二台tomcat:

把8005改为8004:

 8080改为9002:

8009改为8008:

启动第二台tomcat:

修改第三个tomcat的配置文件:

 8005改为8003:

 8080改为9003:

8009改为8007:

启动tomcat:

逐个进行访问:

第一台9001:

第二台:9002

第三台: 9003

都出现代码页面: 代表启动成功

 (5)Nginx-负载均衡案例

复制一份Nginx的配置文件:

 编辑配置文件:

 修改:

 

关闭原来的nginx:

开启新配置的:Nginx

访问:

修改每台tomcat的index页面,加以修改进行区分:

 加9001

加9002

加9003

在次发送请求的时候就可以知道那一台服务器了:

 (6)Nginx负载均衡案例-MyWeb-4种负载均衡-2个其他参数

上传myweb:

把项目复制到9001、9002、9003 webapp下:

 复制后自动帮我们解压缩了:

再复制一个Nginx的配置文件:

 进修改行配置:这里配置的是轮询的负载均衡

重新启动nginx:

访问myweb:

但是分不清那个是9001、9002、9003,需要修改:

 

刷新页面3次:

负载均衡规则:

轮询(默认)

注意:这里的轮询并不是每个请求轮流分配到不同的后端服务器,与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下如果后端服务器down掉,将自动剔除

upstream backserver {

server 127.0.0.1:8080;

server 127.0.0.1:9090;

}

权重

每个请求按一定比例分发到不同的后端服务器,weight值越大访问的比例越大,用于后端服务器性能不均的情况

upstream backserver {

server 192.168.0.14 weight=5;

server 192.168.0.15 weight=2;

}

ip_hash

ip_hash也叫IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失的问题

算法:hash("124.207.55.82") % 2 = 0, 1

upstream backserver {

ip_hash;

server 127.0.0.1:8080;

server 127.0.0.1:9090;

}

最少连接

web请求会被转发到连接数最少的服务器上

upstream backserver {

least_conn;

server 127.0.0.1:8080;

server 127.0.0.1:9090;

}

案例:

设置负载均衡规则:权重

重新启动:本台nginx

访问9001的权重比9002、9003多1

负载均衡最少连接:

负载均衡ip hash

这个无论访问多少次访问的都是9003:

其中有两个参数:

9001标记为down,此时9002服务就不能参与负载均衡了

9002标记为backup:修饰的9002作为备份机使用当9003正常使用时,9002不参与负载均衡,当9003挂掉后,参与使用

这样设置后访问只有9003:

当关闭9003:

再次访问的时候就成了备份机:9002

Nginx学习(二)相关推荐

  1. Nginx学习(一)——Nginx基础知识

    目录 1.Nginx学习(一)--Nginx基础知识 2.Nginx学习(二)--配置文件.反向代理与负载均衡 3.Nginx搭建HTTPS服务器 一.初试Nginx 一.下载安装 1.安装必要的一些 ...

  2. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  3. 【nginx学习一】基本原理初探

    由于性能问题,需要将 apache + php5.2 升级到 nginx + php7,对于nginx的性能和热加载早有耳闻,why nginx so diao.小拽进行了初探,有任何疑问或不准确的地 ...

  4. Docker学习二:Docker镜像与容器

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  5. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

    文章目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安 ...

  6. 【005】Nginx学习笔记-Nginx真实IP

    [005]Nginx学习笔记-Nginx真实IP 真实IP 客户端真实IP 深入理解真实IP 实验一 实验二: 多个代理服务器的情况 实验三:利用realip模块获取客户端真实IP 实验四:伪装请求头 ...

  7. Nginx学习笔记——上篇

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Nginx简介 背景介绍 常见服务器对比 Nginx的优点 Nginx的功能特性及常用功能 基本HTTP服务 高级HTTP服 ...

  8. Nginx学习部署环境(一)

    目录 一.Nginx概述 1.Nginx简介 2.反向代理 3.负载均衡 ​编辑 4.动静分离 二.Nginx安装 1.在Linux系统中安装Nginx 2.Nginx常用命令 3.Nginx配置文件 ...

  9. Nginx 学习总结

    Nginx 学习总结 文章目录 Nginx 学习总结 简介 一.安装Nginx 二.端口域名映射配置 三.反向代理 正向代理和反向代理理解 四.负载均衡 简介 Nginx 是一款高性能的 http 服 ...

  10. 全是精髓!也许是最完美的“Nginx学习笔记”了,阿里云高工“365”天手写!

    前言 "Nginx",一个高性能的HTTP和反向代理web服务器,Nginx因为内存少.并发能力强的特性,深受虚拟机主机提供商的欢迎,可以支持高达50000个并发连接数的响应.Ng ...

最新文章

  1. (0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标
  2. python set过滤
  3. 关于钥匙串中所有证书签名无效的问题解决纪录
  4. 下c语言实现wc_用 Python 实现词云可视化
  5. 永远不要低估“价值互联网”!| 技术头条
  6. mysql 字符串的hash函数_【转载】字符串Hash函数比较
  7. VMware虚拟机XP系统安装图文教程
  8. 【游戏开发创新】自学Blender建模,自制孔明灯,在Unity中点亮整个星空,愿新年,胜旧年(Unity | 建模 | 粒子系统 | 预设)
  9. 他们的爱情 王小波和李银河
  10. 直下式LED背光源和侧入式LED背光源的区别以及哪个好呢
  11. C++ friend和protected
  12. 董事长、总裁、总经理的关系
  13. ZZULIOJ 1055兔子繁殖问题
  14. [electron]Electron安装报错connect ETIMEDOUT
  15. 孙鑫老师MFC视频使用的MSDN帮助文档下载及安装
  16. SourceTree - 学习/使用
  17. No module named 'urllib3'
  18. unity3d 怎么生成网页版_Unity3D 基础教程3D网页游戏场景打包与加载
  19. ❤ 挑战C站最强C++ STL标准库总结(内含大量示例)
  20. 手把手教你从零写一个日志框架

热门文章

  1. 猎豹android浏览器内核,猎豹浏览器用的是什么内核?
  2. Altmetrics(替代计量学):对你的论文影响力的评价方法
  3. html语言的td合并,table标签合并单元格(包括行和列的合并)的方法
  4. python画易烊千玺_易烊千玺手绘画像步骤图,粉丝超爱的千玺手绘图
  5. wx.login报40029
  6. Oracle CBO 与 RBO
  7. 2.php函数,PHP函数索引(2)
  8. C语言实现三子棋(九宫格)的游戏
  9. 【FCL学习第二讲】使用Assimp库导入外部模型碰撞检测
  10. mysql获取时间戳_mysql 获取当前时间戳