| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Nginx总结(反向代理、负载均衡、动静分离)篇 -> 正文阅读 |
|
[系统运维]Nginx总结(反向代理、负载均衡、动静分离)篇 |
一、Nginx简介
先了解一下正向代理 :通过在客户端配置代理服务器,通过代理服务器进行互联网访问! 反向代理 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,由反向代理服务器将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。 二、安装Nginx
1、安装gcc 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
2、PCRE pcre-devel 安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
3、zlib 安装 zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
4、OpenSSL 安装
5、下载安装包 手动下载.tar.gz安装包,地址:https://nginx.org/en/download.html 上传到Linux服务器
然后执行如下命令(按照nginx的默认配置进行安装)
安装完成,此时我们的就会发现在我们的user/local/nginx的目录下存在这么一个sbin的目录,里面是nginx的启动脚本 执行 接下来,我们进入到nginx的conf目录下,查看一个nginx的配置文件nginx.conf 然后我们的通过ip+80端口可以直接测试访问Nginx是否启动,启动成功!(hh,记得把自己的服务器的防火墙打开)
三、Nginx常用命令
具体命令如下 :
四、Nginx的配置文件1、Nginx配置文件的位置
2、配置文件中的内容(包含三部分)
从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用 户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。 比如上面第一行配置的: 这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备 的制约
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化, 是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。 上述例子就表示每个 work process 支持的最大连接数为 1024. 、
需要注意的是:http 块也可以包括 http 全局块、server 块。
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本 ,每个 http 块可以包括多个 server块,而每个 server 块就相当于一个虚拟主机。而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块 全局 server 块最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。 location 块一个 server 块可以配置多个 location 块。 这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
五、Nginx的配置实例实例1:Nginx的反向代理打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页 1、先准备tomcat,然后通过tar -解压
2、进入apache-tomcat-9.0.46的bin目录执行
3、去到日志查看是否启动成功! 测试:ip + 8080端口:成功!(自己的域名备案了,所以就hh) Tomcat配置完毕,接下来就是我们的Nginx的相关配置了! 梳理一下思路:
第一步 :在 windows 系统的 C:\Windows\System32\drivers\etc\host 文件进行域名和 ip 对应关系的配置 原理:当我们输入一个域名的时候,首先会根据本地host文件去解析ip,如果host不存在那么就会去DNS服务器去解析! 配置成功! 第二步:找到nginx.conf进行如下配置(反向代理配置) 第三步:启动Nginx即可,访问www.123.com即可
实例2:Nginx的反向代理使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
1、进入tomcat8080文件夹,解压并启动
然后启动默认就是8080端口 2、进入tomcat8081文件夹,解压并启动 注意:改个配置文件将端口号改为8081,需要修改的配置文件是server.xml 需要修改如下位置 :
最后记得阿里云的安全组和服务器的防火墙都打开! 测试:去分别启动2个Tomcat 启动成功!
准备好2个a.html,分别放入2个tomcat的目录下!
在配置文件加上如下真么一段: 解释:nginx监听自身9001端口,一旦被访问,
注意:记得开端口9001、8081、8080等
实例3:Nginx的负载均衡浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均 8080和 8081 端口中
测试一下:
在http块进行负载均衡配置和服务名,在server块中进行请求配置
测试成功! Nginx 分配服务器策略第一种 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。 第二种 加权轮询具体配置 : weight 代表权重默认为 1,权重越高被分配的客户端越多
第三种 ip_hash *每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session共享的问题 具体配置 : 也就是一个ip访问就指定一台服务器不可变
第四种 fair(第三方)
具体配置
实例4:Nginx的动静分离
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态 请求跟静态请求分开,可以理解成使用 Nginx处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种,
通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和 流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。
在根目录创建2个文件夹iamge(放入一个图片)、www(放入一个HTML文件)
更新一下配置:
我们其中有一行配置:autoindex on 表示目录以文件列表的形式展示
重点是添加 location,最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,之需要删除后端 tomcat服务器上的某个静态文 件,查看是否能访问,如果可以访问说明静态资源 nginx 直接返回了,不走后端 tomcat 服务器
关于Nginx高可用相关文章以后再更新(暂时用不到)! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 3:16:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |