Nginx

标签: nginx

Nginx

Nginx简介:

Nginx是一个高性能的http和反向代理服务器,特点是有内存少,并发能力强,事实上Nginx的并发能力确实在同类型网页服务器中表现较好,

Nginx用作web服务器:Nginx可以作为静态页面的web服务器,同时还支持CGI语言,但不支持java,java程序只能通过Tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验。

反向代理

​ 1,正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要代理服务器来访问,这种代理就称为正向代理,正向代理需配置代理服务器地址。注:Nginx可以用作正向代理来进行上网等功能

​ 2,反向代理,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

两者区别

​ 1,正向代理即是客户端代理,代理客户端,服务端不知道实际发起请求的客户端

​ 2,反向代理即是服务端代理,代理服务端,客户端不知道实际提供服务的服务端

负载均衡

​ 1,负载均衡:单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到的单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,这就是负载均衡

动静分离

​ 1,动静分离:为了加快网站的解析速度,可以吧动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力

Nginx操作常用命令:

​ 1,./nginx -v,查看Nginx版本号

​ 2,./nginx,启动Nginx

​ 3,./nginx -s -stop,关闭Nginx

​ 4,./nginx -s reload,重新加载

注:使用Nginx操作命令前提条件,必须进入Nginx的目录,如:/usr/local/nginx/sbin

Nginx配置文件简介

​ 1,nginx配置文件的位置,相应目录下/nginx/conf/nginx.conf

​ 2,nginx配置文件组成

​ 1),nginx配置文件由 三部分组成

​ 1,全局块

​ 从配置文件开始到events块之间的内容,主要会设置一些影响NGINX服务器整体运行的配置指令、主要包括配置运行nginx服务器的用户(组)、允许生成的worker process数、进程pid存放路径、日志存放路径和类型以及配置文件的引入等。

​ 如:

worker_processes   1;

这是nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约

​ 2,events块

​ events块涉及的指令主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对多worker process下的网络连接进行序列化、是否允许同时接收多个网络连接、选取哪种事件驱动模型来处理连接请求、每个Work process可以同时支持的最大连接数等。这部分对nginx影响较大,实际开发需灵活配置

​ 3,http块:nginx服务器配置中最频繁的部分

​ 1,http全局块

​ http全局块配置的指令包括文件引入、MIME-type定义、日志自定义、连接超时时间、单链接请求数上限等

​ 2,sever块:每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机

​ 1,全局server块:最常见的配置就是本虚拟主机的监听配置和本虚拟主机的名称或IP配置

​ 2,location块:一个server块可以配置多个location块,这块的主要作用是基于nginx服务器接收到的请求字符串(例如:server_name/uri-string ),对虚拟主机名称(也可以是IP别名)之外的字符串(例如:前面的 /uri-string)进行匹配,对特定的请求进行处理,地址定向、数据缓存和应答控制等功能,还有许多第三方的模块也在这里进行。

配置示例

反向代理---------1:

实现效果:

​ Windows浏览器(客户端)访问-------》nginx(访问)------》服务器,即客户端通过反向代理访问特定端口的服务器

​ 注,若在浏览器中访问虚拟机中的端口,需通过命令

​ firewall-cmd --add-port=要开放的端口(例如:8080)/tcp --permanent

​ firewall-cmd reload ,来对外开放访问的端口。

​ 配置示例:

server{
	listen		9001;
	server_name	192.168.17.129;
	location / {
	....
	proxy_pass	http:127.0.0.1:8080;
	....
	}
	....
}

反向代理---------2:

​ 1,实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,如:nginx监听端口为9001,访问http://127.0.0.1:9001/edu/a.html 直接跳转到127.0.0.1:8080,访问http://127.0.0.1:9001/vod/a.html 直接跳转到127.0.0.1:8081

配置示例:

server{
	listen		9001;
	server_name	192.168.17.129;
	location	~ /edu/{
	proxy_pass	http:127.0.0.1:8080;
	}
	location	~ /vod/{
	proxy_pass	http:127.0.0.1:8081;
	}
}

注:

​ 1,=:用于不含正则表达式的URI前,要求字符串与URI严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求

​ 2,~:用于表示URI包含正则表达式,并且区分大小写

​ 3,~*:用于不含正则表达式的URI前,要求nginx服务器找到表示URI和请求字符串匹配度最高的location后,立即用此location处理请求,而不再使用location块中的正则URI和请求字符串做匹配

​ 4,如果URI包含正则表达式,则必须要有*标识

负载均衡-----轮询:

​ 效果:浏览器地址中输入地址http://127.0.0.1:9001/edu/a.html

,会平均分配到8080端口和8081端口上。

负载均衡轮询(默认)配置(注:在http块内配置)

每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动删除

配置示例:

upstream  myserver {
	server	192.168.17.129:8080;
	server	192.168.17.129.8081;
}
server{
	listen	80;
	server_name	192.168.17.129;
	.....
	location / {
		.....
		proxy_pass	http://myserver;
		.....
	}
	....
}

负载均衡----weight

weight 代表权重,默认值为1,权重越高被分配的客户端越多,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况下。

配置示例:

upstream  myserver {
	server	192.168.17.129:8080  weight=5;
	server	192.168.17.129.8081  weight=10;
}
server{
	listen	80;
	server_name	192.168.17.129;
	.....
	location / {
		.....
		proxy_pass	http://myserver;
		.....
	}
	....
}

负载均衡----ip_hash

每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

配置示例:

upstream  myserver {
	ip_hash;
	server	192.168.17.129:8080;
	server	192.168.17.129.8081;
}
server{
	listen	80;
	server_name	192.168.17.129;
	.....
	location / {
		.....
		proxy_pass	http://myserver;
		.....
	}
	....
}

负载均衡----fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配

配置示例:

upstream  myserver {
	server	192.168.17.129:8080;
	server	192.168.17.129.8081;
	fair;
}
server{
	listen	80;
	server_name	192.168.17.129;
	.....
	location / {
		.....
		proxy_pass	http://myserver;
		.....
	}
	....
}

动静分离(目的是为了提高访问速率)

nginx动静分离简单来说就是把静态跟动态请求分开,不能理解成只是单纯的把静态页面和动态页面物理分离,严格意义上说应该是动态请求和静态请求分开可以理解成nginx处理静态页面,Tomcat处理动态页面,动静分离从目前的实现角度来讲大致分为两种:

​ 1,纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前推主流崇的方案。

​ 2,动态跟静态文件混合在一起发布,通过nginx来分开

通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量

配置示例:

server{
	listen	80;
	server_name	192.168.17.129;
	.....
	location /www/ {
		root  /data/;
		.....
	}
	location /image/ {
		root  /data/;
		autoindex on;
	}
	....
}

注:示例中的data表示文件所在的路径,autoindex会列出当前文件目录

nginx集群

nginx配置高可用的集群(即nginx主从复制,主机和从机需安装keepalived)

​ 1,修改keepalived.conf文件

​ 2,添加检测脚本

注:具体怎么配置网上找,这里不再叙述

nginx原理简介:

1,master&worker(采用了io多路复用,和Redis类似)

在这里插入图片描述

2,worker如何进行工作(争抢式)

在这里插入图片描述

3,一个master和多个worker好处:

​ 1,可以使用nginx -s reload热部署,利用nginx进行热部署操作。

​ 2,每个worker式独立的进程,如果有其中一个worker出现问题,其他worker继续进行争抢,实现请求过程,不会造成服务中断

4,可以设置worker数,worker数和服务器的淳朴数相等是最为适宜

5,发送请求一般占用了worker 2(访问静态文件,无需访问数据库)或4(访问动态文件,访问数据库)个连接数

6,普通静态访问最大的并发数是worker_connections*work_processes/2

​ 若是http作为反向代理来说,最大并发数为worker_connections*work_processes/4

版权声明:本文为weixin_45694230原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45694230/article/details/109257659

智能推荐

ActiveMQ学习4-ActiveMQ的安全机制和集群模式

ActiveMQ的安全机制和集群模式 20 ActiveMQ安全机制 20.1 Web 控制台安全 20.2 消息服务器Broker安全 21 ActiveMQ主从集群 21.1 使用集群的重要性 20.2 主从集群的方式 20.2.1 shared filesystem Master-Slave方式主从集群 20.2.2 shared database Master-Slave方式主从集群 20...

说说 Python Django 应用的基础目录结构

通过以下 django-admin 指令创建应用之后,就会生成应用的基础目录结构。 比如,我们建立了一个叫 ‘first’ 的应用,它的目录结构是这样的: 目录或文件 说明 最外层的 first/ 这是新应用的根目录,所有与该应用相关的内容都放在这里。 manage.py 用于管理 Django 项目的命令行工具。 里面一层的 first/ 目录 是一个...

Springboot整合rabbitMQ

依赖: 配置文件application.yml RabbitConfig 消息生产者RabbitProducer 消息消费者RabbitCustomer 通过Controller进行调用 启动项目后调用接口: 结果:...

Thread.join()方法的使用

如果一个线程A执行了thread.join()语句,代表当前线程A等待thread线程终止后才从thread.join()方法返回 并且这个方法具有超时特性,可以添加参数设置 输出结果: jdk中Thread.join()方法的源码(进行了部门调整)   每个线程终止的条件是前驱线程的终止,每个线程等待前驱线程终止后,才从join()方法返回,  当线程终止时,会调用自身的no...

linux服务器部署jenkins笔记

安装jenkins参考文档:https://blog.csdn.net/tomatocc/article/details/83930714 1. 打开jenkins官网:https://jenkins.io/download/ 将war包下载到本地 **ps:**这里要注意的是要下载左边下方的war包,不要下载右边下面的war包。左边是稳定版本,右边是最新版本,建议大家使用稳定版本(我刚开始下载的...

猜你喜欢

k8s部署elasticsearch集群

百度营销大学     环境准备 我们使用的k8s和ceph环境见: https://blog.51cto.com/leejia/2495558 https://blog.51cto.com/leejia/2499684 ECK简介 Elastic Cloud on Kubernetes,这是一款基于 Kubernetes Operator 模式的新型编排产品,用户可使用该产品在...

saas-export项目-AdminLTE介绍与入门

AdminLTE介绍 (1)AdminLTE是什么? AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具 (2)AdminLTE有什么特点? 提供一系列响应的、可重复使用的组件, 并内置了多个模板页面 自适应多种屏幕分辨率,兼容PC和移动端 快速的创建一个响应式的Html5网站 AdminLTE 不但美观, 而且可以免去写很大CSS与JS的工作量 AdminLTE...

MyBatis中ResultMap结果集映射

用于解决属性名和字段名不一致的情况: resultMap 元素是 MyBatis 中最重要最强大的元素。...

编写一个shell

编写shell的过程: 1.从标准输入中读入一个字符串。 2.解析字符串 3.创建一个子进程的执行程序。 4.子进程程序替换。 5.父进程等待子进程退出。...

WEB自动化测试中Xpath定位方法

前言: Xpath是在XML文档中查找信息的一种语言,使用路径表达式来选取XML文档中的节点或节点集,由于XML与HTML结构类似(前者用于传输数据,后者用于显示数据),所以Xpath也常用于查找HTML文档中的节点或节点集。 一  路径表达式: 路径以“/”开始     表示找到满足该绝对路径的元素; 路径以//”开始  ...