一、介绍
1.介绍
Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个邮件代理服务器,它以稳定性、丰富的功能集、简单的配置文件和低系统资源消耗而闻名。
作为一个轻量级的服务器,Nginx在处理高并发连接方面表现出色,能够支持高达50,000个并发连接数。它的内存占用少,并发能力强,这使得它在同类型的网页服务器中具有显著优势。由于这些特点,Nginx被广泛用于各种场景,包括作为Web服务器、反向代理、负载均衡器以及动静分离处理等。
2.配置介绍
nginx的配置 在conf目录下的nginx.conf文件
nginx.conf文件 主要分为三部分
①全局配置:配置一些全局属性
②event配置 例如:worker_connections: 这个指令设置了每个worker进程能够同时开启的最大连接数
③http配置 :配置http的相关配置
二、nginx使用基本命令
1.启动:双击nginx.exe或者打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe
,回车即可
2.关闭
(1)输入nginx命令 nginx -s stop
(快速停止nginx) 或 nginx -s quit
(完整有序的停止nginx)
(2)使用taskkill taskkill /f /t /im nginx.exe
taskkill是用来终止进程的,
/f是强制终止 .
/t终止指定的进程和任何由此启动的子进程。
/im示指定的进程名称 .
其他常用命令
三、配置
1.负载均衡
负载均衡的配置写在 http代码块中
1. nginx通过反向代理服务器实现负载均衡,用户的请求先到达nginx,nginx根据相应的规则分发到多个后端服务器上,以提高系统的可用性和性能。
2.负载均衡策略:
-
轮询(默认):按顺序将请求分发到每个服务器。
-
权重(weight):根据服务器权重进行分发。
-
IP 哈希(ip_hash):根据客户端 IP 地址分发请求,同一个 IP 的请求总是分配到同一个后端服务器。
-
最少连接(least_conn):将请求分发到当前活动连接最少的服务器。
3.示例代码
#动态代理upstream xxxde{#服务器资源server 127.0.0.1:8080 weight=90;server 127.0.0.1:8081 weight=10 ;}server{listen 80;server_name localhost;#访问80的根目录就会打到这里location / {proxy_pass http://xxxde/admin/;}}
upstream +名字 中配置服务器的资源
在server中 配置负载均衡
2.动静分离
将打包好的前段页面 放在nginx的html目录下
Nginx的动静分离是一种优化Web服务器性能的策略,通过将动态内容和静态内容的请求处理分开,可以显著提高服务器的响应速度和降低后端负载。
实现:
- 配置Nginx服务器:在Nginx配置文件中设置不同的location块,根据请求的资源类型(静态或动态),将请求引导到不同的处理路径。
- 静态资源缓存:Nginx可以将静态资源缓存起来,从而减少对后端服务器的请求。
示例代码:
-
location /:匹配所有请求,并将其代理到后端服务器。
-
*location ~ .(jpg|jpeg|png|gif|css|js|ico|html)$**:匹配静态资源文件,并直接由 Nginx 处理。root 指定静态资源的根目录,expires 设置浏览器缓存过期时间。
3.限流
Nginx限流是一种通过控制并发连接数或请求速率来保护服务器的机制,以防止过多的请求影响系统性能。
在高并发的网络环境中,突然涌入的大量请求可能会超出服务器的处理能力,导致性能下降甚至崩溃。通过限流,可以平滑处理请求,防止服务器不堪重负。Nginx提供了多个模块来实现限流功能,如limit_conn_zone、limit_req_zone等。
http {limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;server {listen 80;location / {limit_req zone=mylimit burst=20 nodelay;proxy_pass http://xxxde/admin;}}
}
-
limit_req_zone:定义限流区域,其中 $binary_remote_addr 是客户端 IP 地址,mylimit 是区域名称,10m 是共享内存大小,rate=10r/s 表示每秒最多处理 10 个请求。
-
limit_req:应用限流区域,burst=20 允许的突发请求数, nodelay 表示超过限速的请求立即返回错误而不是排队。
四、总结常见配置
1.全局配置:
worker_processes 1;配置的作用是设置Nginx的 worker 进程数。
2.event
worker_connections 1024;用于设置网络连接的参数,表示每个worker进程可以处理的最大并发连接数为1024。
3.http
①map $http_upgrade $connection_upgrade{ default upgrade; '' close; }map
模块指令,用于根据变量的值来改变另一个变量的值。用来处理协议升级请求的,通常是WebSocket升级,如果请求中包含了升级相关的头信息,Nginx就会尝试进行协议升级;如果没有或请求不包含升级头信息,则正常关闭连接。在websocket时使用
②include mime.types;
:这个指令用于包含一个名为"mime.types"的文件,该文件包含了各种文件扩展名与对应的MIME类型之间的映射关系。MIME类型是一种标识文件内容类型的标准,例如"text/html"表示HTML文档,"image/jpeg"表示JPEG图像等。通过包含这个文件,Nginx可以自动识别并设置正确的MIME类型,以便客户端能够正确地处理不同类型的文件。
③ default_type application/octet-stream;
:这个指令设置了默认的MIME类型为"application/octet-stream"。当Nginx无法根据文件扩展名确定具体的MIME类型时,它会使用这个默认值。"application/octet-stream"是一种通用的二进制数据类型,通常用于未知或不可识别的文件类型。这意味着如果请求的文件没有明确的MIME类型,Nginx会将其作为二进制流发送给客户端。
④sendfile on;
:这个指令启用了sendfile功能。sendfile是一种高效的文件传输方式,它允许操作系统直接将文件内容从磁盘发送到网络套接字,而无需经过用户空间的缓冲区。这样可以节省CPU资源,提高文件传输的速度。当启用sendfile时,Nginx会使用操作系统提供的sendfile系统调用来发送文件,而不是通过读取文件内容并写入套接字的方式。
⑤keepalive_timeout 65;
:这个指令设置了keep-alive连接的超时时间。keep-alive是一种HTTP/1.1协议的特性,它允许客户端和服务器之间保持持久连接,以便在同一个TCP连接上发送多个请求和响应。keepalive_timeout指定了在没有新的请求到达之前,服务器应该保持连接的时间(以秒为单位)。在这个例子中,keepalive_timeout被设置为65秒。这意味着如果客户端在65秒内没有发送新的请求,服务器将关闭连接。