Nginx学习笔记

相关概念

nginx

Nginx 是高性能的 HTTP
和反向代理的web服务器,特点是占用内存少,处理高并发能力是十分强大的,,专为性能优化而开发,能经受高负载的考验,有报告表明能支持高达
50,000 个并发连接数

反向代理

首先要知道什么是正向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。 我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。

负载均衡

可以把请求按照不同的规则,转发到多台服务器上,从而减少了只有一台服务器的压力。

动静分离

可以将动态请求和静态请求区分处理,从而可以提高执行的效率。

nginx的安装与常用命令

nginx启动和关闭命令

在/usr/local/nginx/sbin目录之下找到nginx,进行启动,命令为

[root@root nginx-1.12.2]# cd /usr
[root@root usr]# ls
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@root usr]# cd local
[root@root local]# ls
bin  erlang  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src
[root@root local]# cd nginx
[root@root nginx]# ls
conf  html  logs  sbin
[root@root nginx]# cd sbin
[root@root sbin]# ls
nginx
#启动命令
[root@root sbin]# ./nginx
#关闭命令
[root@root sbin]# ./nginx -s stop
[root@root sbin]# ps -ef|grep nginx
root     121737   4114  0 09:47 pts/0    00:00:00 grep --color=auto nginx

查看已经启动的进程

[root@root sbin]# ps -ef| grep nginx
root     120925      1  0 09:33 ?        00:00:00 nginx: master process ./nginx
nobody   120926 120925  0 09:33 ?        00:00:00 nginx: worker process
root     120940   4114  0 09:34 pts/0    00:00:00 grep --color=auto nginx

重新加载nginx命令

在修改完nginx的配置文件之后,一般需要重启nginx使配置文件生效,所以重启命令为‘

[root@root sbin]# ./nginx -s reload

查看nginx的版本号

在/usr/local/nginx/sbin下输入以下,就可查看版本号

[root@root sbin]# ./nginx -v
nginx version: nginx/1.12.2

查看和编辑nginx配置文件

[root@root sbin]# cd ..
[root@root nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@root nginx]# cd conf
[root@root conf]# ls
fastcgi.conf          fastcgi_params.default  mime.types          nginx.conf.default   uwsgi_params
fastcgi.conf.default  koi-utf                 mime.types.default  scgi_params          uwsgi_params.default
fastcgi_params        koi-win                 nginx.conf          scgi_params.default  win-utf
[root@root conf]# vim nginx.conf

配置文件解析

打开配置文件后,发现有三个部分组成,分别问全局块,events块和http块
在这里插入图片描述

全局块

主要会设置一些影响nginx服务器整体运行的配置指令
work_processes值越大,可以支持的并发处理数越多

events块

配置服务器和用户网络连接
worker_connection:设置最大连接数为1024

http块

是nginx配置最频繁的部分,此块又包括http全局块和server块

nginx实现反向代理

1简单的直接访问

根据反向代理的概念,假设希望在浏览器输入www.hai.com,会自动跳转到linux系统封的tomcat主页面
准备工作要先打开linux系统上的tomcat服务器
在这里插入图片描述启动后在windows系统上可以访问linux系统上的tomcat

在这里插入图片描述
现在希望在浏览器只输入www.hai.com,就可以实现打开tomcat服务器。具体实现流程如下:
在这里插入图片描述1.更改网址的映射,在host文件中添加映射
在这里插入图片描述
打开hosts文件,添加如下

#添加ip和域名
192.168.154.128 www.hai.com

第二步,在nginx服务器下更改配置文件,使访问的端口可以映射到指定的服务
在这里插入图片描述
第三步,保存退出并重新其启动nginx
第四步,重启之后,在window浏览器访问,的确可以访问到
在这里插入图片描述

带有参数的访问

当访问同一个地址但是带有不同的参数时,会访问到linux上不同的服务
如www.hai.com/tomcat-------->就会开启linux上的tomcat服务器
当访问www.hai.com/rabbitmq-------------->就会开启linux上的rabbitmq服务

找到nginx的配置文件,进行配置
在这里插入图片描述
根据不同的参数,可以访问不同的服务器端口号

负载均衡

在这里插入图片描述

分配策略

1.轮询分发任务
默认配置就是轮询分发任务,如果有一个服务器坏掉会自动的将故障的服务器剔除掉
2权重策略,权值默认为1,并且权值越大,则被分配的任务也就越多
在这里插入图片描述
3 iphash的策略,只需要在上面声明就好
在这里插入图片描述每一个请求按访问ip的hash结果分配,这样每一个访客固定访问一个后端服务器,可以解决session的问题
4.fair,不采用轮询的分配,按照后端处理的速度进行分配
在这里插入图片描述响应时间短的先分配。

动静分离

Nginx的动静分离实际上是指把动态请求和静态请求进行分离,而不能理解为把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分离开,动静分离从目前实现的角度来讲大致分为两种:一种纯粹是把静态文件独立成单独的域名,放在独立的服务器上,是目前主流的推崇方案,第二种是把动态和静态的资源文件混合发布,通过nginx分开。

在这里插入图片描述通过location指定不同的后缀名实现不同的请求转发,通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之间的请求和流量。
expire具体参数的含义是给一个资源设定过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量,此方法不适合经常变动的资源。

高可用集群

前面介绍了在一个nginx上对两台多台服务器进行负载均衡,但是如果nginx本身出现故障了也是一个问题,就不能进行后续的访问,因此要对nginx进行高可用,对nginx服务器进行备用服务器
在这里插入图片描述

Nginx原理

在这里插入图片描述
在这里插入图片描述
采用这种机构的好处:
1
在这里插入图片描述2有利于做热部署,即当执行

./nginx -s reload

时,可以不用关闭niginx服务器而重新读取更改的配置文件,原理就是由于nginx采用的是masterWorker机制,当一个worker在执行时,可以暂时先不执行更改的配置,其他worker还没有请求任务时,可以进行配置文件的更新,而当有执行任务的worker执行完任务之后,就可以重新的更新配置文件,从而实现了热点部署。

3Nginx和redis类似,采用了io多路复用机制,每一个worker都是一个独立的进程,但是每一个进程里只有一个主线程,通过异步非阻塞的方式处理请求,每一个新城可以把一个cpu的性能发挥到机制,所以worker的数量和cpu的数量相等是最为适宜的。

每发一次请求,worker的连接数是几个?

可以为2个或者4个,
2个是因为worker接收请求时一个,返回请求时,是一个
4个是因为,有时候可能会有如连接数据库的操作,因此有4个

如果Nginx有一个master,四个worker,每一个worker支持的最大连接数为1024,那么支持的最大并发数是多少?

如果是普通的静态资源访问最大并发数是:worker_numswork_connections/2
4
1024/2=2048
如果是http作为反向代理来说,最大的并发数为worker_numswork_connections/4
4
1024/4=1024

遗传算法优化BP神经网络(GABP)是一种结合了遗传算法(GA)和BP神经网络的优化预测方法。BP神经网络是一种多层前馈神经网络,常用于模式识别和预测问题,但其容易陷入局部最优。而遗传算法是一种模拟自然选择和遗传机制的全局优化方法,能够有效避免局部最优 。GABP算法通过遗传算法优化BP神经网络的权重和阈值,从而提高网络的学习效率和预测精度 。 种群:遗传算法中个体的集合,每个个体代表一种可能的解决方案。 编码:将解决方案转化为适合遗传操作的形式,如二进制编码。 适应度函数:用于评估个体解的质量,通常与目标函数相反,目标函数值越小,适应度越高。 选择:根据适应度保留优秀个体,常见方法有轮盘赌选择、锦标赛选择等。 交叉:两个父代个体交换部分基因生成子代。 变异:随机改变个体的部分基因,增加种群多样性。 终止条件:当迭代次数或适应度阈值达到预设值时停止算法 。 初始化种群:随机生成一组神经网络参数(权重和阈值)作为初始种群 。 计算适应度:使用神经网络模型进行训练和预测,根据预测误差计算适应度 。 选择操作:根据适应度选择优秀个体 。 交叉操作:对选择的个体进行交叉,生成新的子代个体 。 变异操作:对子代进行随机变异 。 替换操作:用新生成的子代替换掉一部分旧种群 。 重复步骤2-6,直到满足终止条件 。 适应度函数通常以预测误差为基础,误差越小,适应度越高。常用的误差指标包括均方根误差(RMSE)或平均绝对误差(MAE)等 。 GABP代码中包含了适应度函数的定义、种群的生成、选择、交叉、变异以及训练过程。代码注释详尽,便于理解每个步骤的作用 。 GABP算法适用于多种领域,如时间序列预测、经济预测、工程问题的优化等。它特别适合解决多峰优化问题,能够有效提高预测的准确性和稳定性 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值