nginx调优(二)

一、event模块:

用于配置服务器的事件驱动机制的模块。它定义了 Nginx 如何处理并发连接和网络事件,以及如何与底层操作系统的事件机制交互。

  1.最大并发连接数:

worker_connections  65536;

  2.选择事件驱动:

   nginx默认使用epoll时间驱动类型:

   use epoll;     ##不写默认是epoll

  3.互斥锁:

    使用互斥锁来限制同时只有一个 worker 进程能够接受新的连接。在高并发环境中可以提高性能和稳定性。在高流量和高并发的情况下,使用 accept_mutex on; 可能会导致性能下降,因为每个 worker 进程在接受新连接时都需要等待互斥锁的释放。

accept_mutex on;#追求稳定打开

4.网络多连接:

multi_accept 设置为 on 时,Nginx 的 worker 进程会一次性接受多个新连接,在高并发环境中,可以提高性能。可能会导致某些 worker 进程在某一时刻接受了更多的连接,而其他进程接受较少的连接。这可能会影响负载均衡。(建议设置on,处理高并发)

multi_accept on; 

二、http模块:

     是用于配置 HTTP 服务器功能的核心模块。定义和管理 HTTP 服务、虚拟主机、反向代理、负载均衡、缓存、访问控制等一系列与 Web 服务器相关的功能。

1.server块 基于域名构建虚拟主机:

  1.1 指定子配置文件:

    多个服务编写在不同的子配置文件中,可以更好地管理。

mkdir -p /apps/nginx/conf.dvim /apps/nginx/conf/nginx.conf  include       /apps/nginx/conf.d/*.conf;

 1.2 编写子配置文件:

cd /apps/nginx/conf.dvim pc.confserver {listen 80;server_name www.wzw.com;root /apps/nginx/html/pc/;}vim m.confserver {listen 80;server_name m.wzw.com;root /apps/nginx/html/m/;}

 

1.3 构建数据文件:

1.创建文件夹mkdir /apps/nginx/html/{pc,m}2.构建数据echo pc > /apps/nginx/html/pc/index.html
echo mmm > /apps/nginx/html/m/index.htmlnginx -s reload

1.4 测试:

客户机更改host文件:

vim /etc/hosts192.168.88.100 www.wzw.com m.wzw.com

 

 1.5 基于端口:

   更改子配置文件

server{listen 192.168.91.100:80;server_name www.wzw.com;root /data/nginx/html/pc;}server{listen   192.168.91.100:8080;server_name m.wzw.com;root  /data/nginx/html/m;
}

1.6 基于IP:

    需要添加一块虚拟网卡

ifconfig ens33:0 192.168.88.101

 更改子配置文件IP

server{listen 192.168.91.100;server_name www.wzw.com;root /data/nginx/html/pc;}server{listen   192.168.91.101;server_name m.wzw.com;root  /data/nginx/html/m;
}

2.alias 设置别名:

server {listen 80;server_name www.wzw.com;location /nwes {root /data/nginx/html/pc/;#相当于追加  将文件夹news追加到/data/nginx/html/pc/news}location /study{alias /mnt/nginx/sports/;#相当于替换访问路径 你访问 study  就是访问/mnt/nginx/sports}
}

3.location:

   在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优化级找出一个最佳匹配。

 3.1 格式:

location [ = | ~ | ~* | ^~ ] uri { ... }

=                  #需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止立即处理请求
^~                #表示包含正则表达式,并且匹配以指定的正则表达式开头,不区分字符大小写
~                  #表示包含正则表达式,并且区分大小写
~*                #表示包含正则表达式,并且不区分大写
不带符号              #匹配起始于此uri的所有的uri
 \                 #表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

#匹配优先级从高到低:
=,   ^~ ,   ~/~* ,  不带符号

  3.2 案例:

location = / {[ configuration A ]
}
location / {[ configuration B ]
}
location /documents/ {[ configuration C ]
}
location ^~ /images/ {[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {[ configuration E ]
}访问路径是    /                     
访问路径是    /index.html
访问路径是    /documents/document.html
访问路径是    /images/1.gif
访问路径是    /documents/1.jpg

4.access四层控制模块:

location / {allow 192.168.1.0/24;allow 10.1.1.0/16;deny  all;
}

  匹配了之后就不往下匹配了,所以范围小的往上放

5.验证模块:

server {listen 80;server_name www.wzw.com;root /apps/nginx/html/pc/;location = / {root /apps/nginx/html/pc;
}location /admin{auth_basic      "admin site";auth_basic_user_file /apps/nginx/conf.d/.httpuser;}
}

5.1 htpasswd:

  此命令来自于 httpd-tools 包,如果没有安装 一下即可

yum -y install httpd-tools

第一次生成文件:

htpasswd -bc 文件路径 姓名 密码           直接将密码跟在后面

第二次生成文件:

htpasswd -b  文件路径 姓名 密码           直接将密码跟在后面 

-c  代表新建用户名和密码对应的文件
-b  将密码跟在用户名后

 

 

6.自定义错误界面:

server {listen 80;server_name www.wzw.com;root /apps/nginx/html/pc/;error_page 404 /40x.html;   location = /40x.html {root /apps/nginx/html/pc/error/;location = / {root /apps/nginx/html/pc;   ##当出现404就去找40x.html这个文件
}location /admin{auth_basic      "admin site";auth_basic_user_file /apps/nginx/conf.d/.httpuser;}}

 

6.1 自定义状态码:

server {listen 80;server_name www.wzw.com;error_page 404 =302 /40x.html;    #建议使用302location = /40x.html {root /apps/nginx/html/pc/error/;location = / {root /apps/nginx/html/pc;
}location /admin{auth_basic      "admin site";auth_basic_user_file /apps/nginx/conf.d/.httpuser;}}
把错误码 404 指定成302    注意此处的  40x.html 需要真实存在建立的页面必须一致

 7.日志位置存放:

server {listen 80;server_name www.wzw.com;root /apps/nginx/html/pc/;access_log /apps/nginx/logs/wzw_access.log;##添加日志存放位置location = / {root /apps/nginx/html/pc/;
}location /admin{root /apps/nginx/html/pc/admin.html;auth_basic    "admin site";auth_basic_user_file /apps/nginx/conf.d/.httpuser;
}
}

8.检测文件是否存在:

    try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。

server {listen 80;server_name 192.168.88.100;root /apps/nginx/html;location  / {root /apps/nginx/html;try_files $uri  $uri.html $uri/index.html /about/default.html;
}
}

当test存在时:

 当test被删除时,会找到test.html:

 没有匹配项时,托底的default:

 9.作为下载服务器配置:

server {listen 80;server_name 192.168.88.100;root /apps/nginx/html;location /download {autoindex on;              #开启下载服务器autoindex_exact_size on;   #开启确切大小autoindex_localtime on;    #使用当地时间limit_rate 1024k;          #所有人限速1024k,默认单位是字节数alias /opt/download;       #别名,当访问download时跳转到/opt/download
}
}mkdir /opt/downloadmount /dev/sr0 /opt/download/

 10.其他设置:

   limit_except method ... { ... },仅用于location
#限制客户端使用除了指定的请求方法之外的其它方法 
method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND, 
PROPPATCH, LOCK, UNLOCK, PATCH
limit_except GET {
 allow 192.168.91.101;
 deny all;
}
#除了GET和HEAD 之外其它方法仅允许192.168.1.0/24网段主机使用

三、高级配置:

  1.网页的状态页:

      基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module,否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态

   这里为了安全起见添加了验证模块:

server {listen 80;server_name 192.168.88.100;root /apps/nginx/html/pc/;location /admin{stub_status;                          #启用statusauth_basic    "admin site";auth_basic_user_file /apps/nginx/conf.d/.httpuser;}
}

1.1.状态信息介绍:

Active connections: 
#当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting
accepts:
#统计总值,Nginx自启动后已经接受的客户端请求的总数。
handled:
#统计总值,Nginx自启动后已经处理完成的客户端请求总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接
requests:
#统计总值,Nginx自启动后客户端发来的总的请求数。
Reading:
#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足
Writing:
#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大
Waiting:
#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)

 2.Nginx 第三方模块:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/55834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows系统 Fooocus 图片生成模型 ,4-6GB显存即可玩,27S/p

安装步骤: 1.下载程序代码框架,大小2GB ,下载 ​​​​​​https://github.com/lllyasviel/Fooocus/releases/download/1.0.35/Fooocus_win64_1-1-1035.7z 2.下载模型文件sd_xl_base_1.0_0.9vae.safetensors ,大小6GBhttps://huggingface.co/stabilityai/stable-diffusion-x…

Window基础命令

文章目录 查看哪些端口被禁用TCP协议删除开机启动项方案1方案2 查看哪些端口被禁用TCP协议 netsh interface ipv4 show excludedportrange protocoltcp删除开机启动项 方案1 列出所有启动项 bcdedit /enum仔细看你要删除的是哪一项(看description)&a…

2 hadoop的目录

1. 目录结构: 其中比较的重要的路径有: hdfs,mapred,yarn (1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本 (2)etc目录&#x…

数据结构入门 — 顺序表详解

前言 数据结构入门 — 顺序表详解 博客主页链接:https://blog.csdn.net/m0_74014525 关注博主,后期持续更新系列文章 文章末尾有源码 *****感谢观看,希望对你有所帮助***** 文章目录 前言一、顺序表1. 顺序表是什么2. 优缺点 二、概念及结构…

32、启用 HTTP 响应压缩和编程式配置Web应用

★ 启用HTTP压缩 就是前端页面如果改动的比较多,那么响应就会比较慢,可以通过设置HTTP响应压缩来提高响应,如果前端改动少,那么就不需要启动这个响应压缩。 目的:为了提高HTTP响应数据在网络上的传输效率。▲ 设置如…

R语言常用数学函数

目录 1. - * / ^ 2.%/%和%% 3.ceiling,floor,round 4.signif,trunc,zapsamll 5.max,min,mean,pmax,pmin 6.range和sum 7.prod 8.cumsum,cumprod,cummax,cummin 9.sort 10. approx 11.approx fun 12.diff 13.sign 14.var和sd 15.median 16.IQR 17.ave 18.five…

用Python写一个武侠游戏

前言 在本教程中,我们将使用Python写一个武侠类的游戏,大的框架全部搭好了,很多元素都可以自己添加,让游戏更丰富 📝个人主页→数据挖掘博主ZTLJQ的主页 个人推荐python学习系列: ☄️爬虫JS逆向系列专栏 -…

编码过程中需要注意哪些安全问题?

SQL 安全 注入式(Inject)攻击是一类非常常见的攻击方式,其基本特征是程序允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能完全改变最初预计的执行过程,产生恶意效果。下面是几种主要的注入…

帆软报表系统获取管理员权限

子曰:“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉:可谓好学也已。” 漏洞实战 构造payload,访问漏洞url后台地址: /ReportServer?opfr_auth&cmdah_loginui&_161983254558…

基于安卓的考研助手系统app 微信小程序

,设计并开发实用、方便的应用程序具有重要的意义和良好的市场前景。HBuilder技术作为当前最流行的操作平台,自然也存在着大量的应用服务需求。 本课题研究的是基于HBuilder技术平台的安卓的考研助手APP,开发这款安卓的考研助手APP主要是为了…

Go【gin和gorm框架】实现紧急事件登记的接口

简单来说,就是接受前端微信小程序发来的数据保存到数据库,这是我写的第二个接口,相比前一个要稍微简单一些,而且因为前端页面也是我写的,参数类型自然是无缝对接_ 前端页面大概长这个样子 先用apifox模拟发送请求测试…

在其他python环境中使用jupyter notebook

1、切换到目标python环境 activate 目标python环境 2、安装notebook内核包 pip install ipykernel 3、加环境加入到notebook中 python -m ipykernel install 目标python环境 4、切换到base环境 activate base 5、打开目标项目的对应盘 如果,项目在c盘&…

【linux进程概念】

目录: 冯诺依曼体系结构操作系统进程 基本概念描述进程-PCBtask_struct-PCB的一种task_ struct内容分类组织进程查看进程 fork()函数 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺…

基于HarmonyOS ArkUI实现音乐列表功能

本节将演示如何在基于HarmonyOS ArkUI的List组件来实现音乐列表功能。 本文涉及的所有源码&#xff0c;均可以在文末链接中找到。 活动主页 华为开发者论坛 规则要求具体要求如下&#xff1a; 第1步&#xff1a;观看<HarmonyOS第一课>“营”在暑期•系列直播&#x…

(WAF)Web应用程序防火墙介绍

&#xff08;WAF&#xff09;Web应用程序防火墙介绍 1. WAF概述 ​ Web应用程序防火墙&#xff08;WAF&#xff09;是一种关键的网络安全解决方案&#xff0c;用于保护Web应用程序免受各种网络攻击和威胁。随着互联网的不断发展&#xff0c;Web应用程序变得越来越复杂&#x…

使用 uniapp 适用于wx小程序 - 实现移动端头部的封装和调用

图例&#xff1a;红框区域&#xff0c;使其标题区与胶囊对齐 一、组件 navigation.vue <template><view class"nav_name"><view class"nav-title" :style"{color : props.color, padding-top : toprpx,background : props.bgColor,he…

【字节跳动青训营】后端笔记整理-4 | Go框架三件套之GORM的使用

**本人是第六届字节跳动青训营&#xff08;后端组&#xff09;的成员。本文由博主本人整理自该营的日常学习实践&#xff0c;首发于稀土掘金。 我的go开发环境&#xff1a; *本地IDE&#xff1a;GoLand 2023.1.2 *go&#xff1a;1.20.6 *MySQL&#xff1a;8.0 本文介绍Go框架三…

【Java 高阶】一文精通 Spring MVC - 数据验证(七)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

iOS 如何对整张图分别局部磨砂,并完全贴合

官方磨砂方式 - (UIVisualEffectView *)effectView{if(!_effectView){UIBlurEffect *blur [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];_effectView [[UIVisualEffectView alloc] initWithEffect:blur];}return _effectView; }使用这种方式对一张图的上半部分和…