我是靠谱客的博主 震动世界,最近开发中收集的这篇文章主要介绍NginxNginx,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

最后

以上就是震动世界为你收集整理的NginxNginx的全部内容,希望文章能够帮你解决NginxNginx所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部