Nginx简单了解

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
支持热部署,启动简单。

配置文件

下载安装

(1)下载nginx,解压安装
在这里插入图片描述(2)命令
在nginx.exe的目录地址栏,输出cmd
启动命令: start nginx
重新启动: nginx -s reload
停止服务: nginx -s stop
例如: 在这里插入图片描述
也可以在任务管理器中找到nginx进程,停止进程
(3)查看是否启动 ( http://localhost:80)
默认段在这里插入图片描述

文件目录

(1)conf:核心配置文件
例如:nginx.conf(主要配置文件)

# 主进程叫master,负责管理子进程,子进程叫worker
# worker_processes配置项表示开启几个业务进程,一般和cpu核数有关
worker_processes  1;

events {
    worker_connections  1024;
}

http {
	# include表示可以引入其他文件,此处表示引入http mime类型
    include       mime.types;
    default_type  application/octet-stream; # 默认使用二进制流的方式传输
    sendfile        on;
    keepalive_timeout  65; # 指定每个TCP连接最多可以保持多长时间,Nginx 的默认值是75秒,有些浏览器最多只保持60秒
	# 虚拟主机,可以配置多个
    server {
        listen       80; # 端口
        server_name  localhost; # ip以及域名 (域名默认端口80)
        location / {
        	# 路径匹配之后,哪个目录下去匹配相应的网页,html是相对路径
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html; # 错误页面
        location = /50x.html {
            root   html;
        }
	}
	server {
 	}

配置文件详情
(1.1)全局模块 ---- 设置一些影响Nginx服务器整体运行的配置指令
		例如:
			worker_processes 1; 默认为1,表示开启一个业务进程
			worker_processes 配置是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的约束。
(1.2)events 模块 -----主要影响Nginx服务器与用户的网络连接
		设置包括:是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等
		例如:
			worker_connections 1024; 单个业务进程可接受连接数(最大连接数:1024)
(1.3)http 模块  ---- 代理、缓存和日志定义等绝大多数功能和第三方模块的配置
		可以包括 http全局块、server块
		全局块包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等
		例如:
			default_type application/octet-stream; 如果mime类型没匹配上,默认使用二进制流的方式传输。
			keepalive_timeout 65; 指定每个TCP连接最多可以保持多长时间,Nginx 的默认值是75秒,有些浏览器最多只保持60秒
	每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。
(1.4)server 模块  --- 和虚拟主机有密切关系,从用户角度看,虚拟主机和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
	配置是本虚拟机主机的监听(端口号)配置和本虚拟主机的名称(域名)或IP配置。
	例如:
		listen:端口号(域名默认80)
		server_name:ip以及域名
		location:基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(server_name)之外的字符串(例如  /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能
  同时配置root和proxy_pass选项时,两个选项只会二选一执行
  例如:
		  location / {
	            root   html/dist;
	            index  index.html index.htm;
	        }		
			location /admin{
				proxy_pass http://localhost:8086/admin/;
			}	
			proxy_pass:设置后端代理服务器的地址。这个地址(address)可以是一个域名或ip地址和端口
			proxy_set_header:就是可设置请求头-并将头信息传递到服务器端。
			root:location中root指定的只是相对路径,需要和路径结合起来映射地址
  location指令:
	  	= 开头表示精确匹配。如 A 中只匹配根目录结尾的请求,后面不能带任何字符串;
		^~ 开头表示uri以某个常规字符串开头,不是正则匹配;
		~ 开头表示区分大小写的正则匹配;
		~* 开头表示不区分大小写的正则匹配;
		/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到。

(2)html:存放静态页面文件(index.html、50x.html)
(3)logs:存储日志文件
(4)docs:存放文档
(5)temp:存放临时文件

运行原理

在这里插入图片描述

Nginx的进程是使用经典的「Master-Worker」模型,Nginx在启动后,会有一个master进程和多个worker进程。
master进程主要用来管理worker进程
master接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
worker进程主要处理基本的网络事件,多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理。
worker进程的数量是可以设置的,一般会设置与机器cpu核数一致

反向代理

在这里插入图片描述
简单描述:代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器。
详细过程:将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP地址。

优点

(1)可以起到保护网站安全的作用,因为任何来自Internet的请求都必须先经过代理服务器。
(2)前后端分离,提升开发效率,提升页面性能,优化用户体验
(3)实现负载均衡,提高系统的可伸缩性与可靠性,提高系统的吞吐率

案例
	location / {
       root   html/dist;
        index  index.html index.htm;
    }		
	location /admin{
		proxy_pass http://localhost:8086/admin/;
	}	
正向代理

在这里插入图片描述

简单描述:通过代理服务器来访问目标服务器,这种代理服务就称为正向代理

负载均衡

简单描述:通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,进而提高系统的吞吐率;另外如果其中某一台服务器挂掉,其他服务器还可以正常提供服务,以此来提高系统的可伸缩性与可靠性

优点

(1)提高系统的可伸缩性与可靠性
(2)提高系统的吞吐率

负载均衡的方式

(1) 轮询法(nginx默认策略)
它是upstream模块默认的负载均衡默认策略。
会将每个请求按时间顺序分配到不同的后端服务器。 在这里插入图片描述
(2)weight权重模式(加权轮询)
指定轮询的访问几率,用于后端服务器性能不均时调整访问比例。 在这里插入图片描述
(3)ip_hash
指定负载均衡器按照基于客户端IP的分配方式(将ip映射成hash值----hash算法),这个方法确保了相同的客户端的请求一直发送到相同的服务器,可以解决session不能跨服务器的问题。 在这里插入图片描述
ip_hash算法是取ip地址的前三段数字进行hash映射,如果只有最后一段不一样,也会发送到同一个Tomcat里面。
在这里插入图片描述
注意事项:一旦使用了ip_hash,当我们需要移除一台服务器的时候,不能直接删除这个配置项,而是需要在这台服务器配置后面加上关键字down,表示不可用;因为如果直接移除配置项,会导致hash算法发生更改,后续所有的请求都会发生混乱;
(4)least_conn(最少连接):把请求转发给连接数较少的后端服务器。 在这里插入图片描述
(5)fair(第三方):按照服务器端的响应时间来分配请求,响应时间短的优先分配。 在这里插入图片描述
(6)url_hash(第三方):该策略按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,需要配合缓存用。 在这里插入图片描述

参考链接: https://blog.csdn.net/zxd1435513775/article/details/102508463
参考链接: https://www.cnblogs.com/mklblog/p/16478798.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
05-27
好的,以下是一些关于Nginx的常见面试问题及其答案: 1. 什么是NginxNginx是一款高性能的Web服务器和反向代理服务器,也可以作为负载均衡器、HTTP缓存和安全控制等功能。 2. Nginx与Apache相比有什么优势? 相比Apache,Nginx的优势有以下几点: - 轻量级,占用资源更少; - 高并发处理能力更强; - 更好的静态文件处理能力; - 支持热部署; - 支持反向代理、负载均衡等高级功能。 3. 什么是反向代理? 反向代理是一种服务器端的代理技术,它代理的是服务器接收请求的过程。当客户端发起请求时,它会被发送到反向代理服务器,然后由反向代理服务器将请求转发给真正的服务器。这样可以隐藏真实服务器的IP地址,提高服务器的安全性,同时还可以实现负载均衡等功能。 4. Nginx如何实现反向代理? 在Nginx中,可以使用代理模块实现反向代理功能。通过配置代理服务器的地址和端口,将请求转发给真正的服务器。 例如,以下是一个简单Nginx反向代理配置示例: ``` server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; } } ``` 其中,`backend_server`是真正的服务器地址,Nginx会将所有请求转发给该地址。 5. Nginx如何实现负载均衡? Nginx可以通过配置upstream模块来实现负载均衡。通过在upstream中配置多个服务器地址和权重,Nginx会自动将请求转发给这些服务器,并根据权重分配流量。 例如,以下是一个简单Nginx负载均衡配置示例: ``` upstream backend { server 192.168.1.1 weight=3; server 192.168.1.2; server 192.168.1.3; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } ``` 其中,`backend`是upstream的名称,Nginx会根据权重将请求分配给多个服务器。 希望这些答案能够帮助你更好地了解Nginx。如果你还有其他问题或者需要更详细的解答,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值