Nginx-----------高性能的 Web服务端 location 优先级(二)

一、event事件

events {worker_connections  65536;  #设置单个工作进程的最大并发连接数use epoll;#使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。accept_mutex on; #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为onmulti_accept on; #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on
}
小问题:一个服务端最多能接受多少客户端

服务器的硬件配置、操作系统的设置、网络带宽等。在理论上,一个服务器可以接受的最大客户端数量是有限的,这个数量通常被称为"最大并发连接数"。然而,这个数量可能会受到服务器硬件的限制,例如 CPU、内存和网络带宽的限制。此外,操作系统的设置也可能会影响这个数量,例如操作系统可能会限制一个进程可以打开的文件描述符的数量。

补充

Nginx 是一个 HTTP 和反向代理服务器,它主要用于处理 HTTP 请求。它不能直接控制或管理设备的 MAC 地址,因为 MAC 地址是设备的物理地址,由设备的网络接口硬件决定,而不是由软件决定。

反向代理服务器是一种服务器配置,它接收客户端的请求,然后将这些请求转发给后端服务器,最后将后端服务器的响应返回给客户端。

二、 http设置

http 是一个大的语句块,包含若干个小的语句块(比如server语句块)

http {......  #各server的公共配置server {    #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器...}server {     ...server_name   #虚拟主机名root     #主目录alias     #路径别名location [OPERATOR] URL {     #指定URL的特性...if CONDITION {...}}}
}

http 协议配置说明

http {include       mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件
#日志配置部分#log_format main '$remote_addr - $remote_user [$time_local] "$request" '#                 '$status $body_bytes_sent "$http_referer" '#                 '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;
#自定义优化参数sendfile       on; #tcp_nopush     on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。#tcp_nodelay   off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户响应报文。#keepalive_timeout 0;keepalive_timeout  65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同#gzip on; #开启文件压缩server {listen       80; #设置监听地址和端口server_name localhost; #设置server name,可以以空格隔开写多个并支持正则表达式,如:*.kgc.com www.kgc.* ~^www\d+\.kgc\.com$ default_server #charset koi8-r; #设置编码格式,默认是俄语格式,建议改为utf-8#access_log logs/host.access.log main;location /fxj  {           www.ky31.com/fsj     /apps/nginx/html   root   /data;index index.html index.htm;}#error_page 404             /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504 /50x.html; #定义错误页面location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ { #以http的方式转发php请求到指定web服务器#   proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ { #以fastcgi的方式转发php请求到php处理#   root           html;#   fastcgi_pass   127.0.0.1:9000;#   fastcgi_index index.php;#   fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;#   include       fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht { #拒绝web形式访问指定文件,如很多的网站都是通过.htaccess文件
来改变自己的重定向等功能。#   deny all;#}location ~ /passwd.html {deny all;}}# another virtual host using mix of IP-, name-, and port-based configuration##server { #自定义虚拟server
3.3.1 MIME
范例: 识别php文件为text/html#   listen       8000;#   listen       somename:8080;#   server_name somename alias another.alias;#   location / { #       root   html;#       index index.html index.htm; #指定默认网页文件,此指令由
ngx_http_index_module模块提供#   }#}# HTTPS server##server { #https服务器配置#   listen       443 ssl;#   server_name localhost;#   ssl_certificate     cert.pem;#   ssl_certificate_key cert.key;#   ssl_session_cache   shared:SSL:1m;#   ssl_session_timeout 5m;#   ssl_ciphers HIGH:!aNULL:!MD5;#   ssl_prefer_server_ciphers on;#   location / {#       root   html;#       index index.html index.htm;#   }#}

2.1 mime

此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上

[root@localhost ~]#vim  /etc/nginx/mime.types
types {text/html                                        html htm shtml;.....................................................................image/png                                        png;image/svg+xml                                    svg svgz;image/tiff                                       tif tiff;image/vnd.wap.wbmp                               wbmp;image/webp                                       webp;image/x-icon                                     ico;image/x-jng                                      jng;image/x-ms-bmp                                   bmp;

2.2 sever 下的 root

root指定了主页文件的位置

root路径格式 指定文件的路径    url  
Syntax:	root path;
Default:	
root html;
Context:	http, server, location, 指明  你软件的根目录

写在server中

如果写在location中

检测:

location 根据 用户访问地址的不同,指定访问的目录

2.3 server块构  建虚拟主机 实际只有1台, 好像有多台主机

A 建立独立的配置文件 构建不同虚拟主机 PC端和手机端

第一种:基于不同域名的虚拟主机

[root@zzzcentos1 conf.d]#vim /apps/nginx/conf/nginx.conf

include       /apps/nginx/conf.d/*.conf;

开始编写PC页面

[root@zzzcentos1 conf.d]#mkdir /data/
[root@zzzcentos1 conf.d]#mkdir /data/html
[root@zzzcentos1 conf.d]#echo /data/html > /data/html/index.html
[root@zzzcentos1 conf.d]#echo pcpcpc >> /data/html/index.html
[root@zzzcentos1 conf.d]#cat /data/html/index.html
/data/html
pcpcpc
[root@zzzcentos1 conf.d]#

开始编写手机端页面

server{listen 80;server_name www.m.com;root /mnt/html/;}

[root@zzzcentos1 conf.d]#cp pc.conf m.conf
[root@zzzcentos1 conf.d]#ls
m.conf  pc.conf
[root@zzzcentos1 conf.d]#vim m.conf
server{listen 80;server_name www.m.com;root /mnt/html/;}
[root@zzzcentos1 conf.d]#mkdir /mnt/html/
[root@zzzcentos1 conf.d]#echo /mnt/html > /mnt/html/index.html
[root@zzzcentos1 conf.d]#echo mmmmm >> /mnt/html/index.html
[root@zzzcentos1 conf.d]#cat /mnt/html/index.html
/mnt/html
mmmmm
[root@zzzcentos1 conf.d]#nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
[root@zzzcentos1 conf.d]#nginx -s reload

测试:

我们用了一台主机设置了2个域名 

第二种:基于不同ip地址

第三种:基于不同的端口

2.4 alias 别名

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

[root@zzzcentos1 conf.d]#vim pc.conf
server{listen 80;server_name www.lucky.com;root /data/html/;location /shouji {alias  /opt/;}
}

检测:

实验2:

去7-2检测

补充

当这个里面有相同配置的文件,按照字母顺序往下读取,第一位相同再比较第二位

2.5 location去匹配     追踪url 

在一个server中location配置段可存在多个,用于实现从url到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优化级找出一个最佳匹配,而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个url,uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。

location实际是对用户的请求做个性化设置,根据用户访问的地址不同,指定访问的目录

如果没有对location做定义目录,那么会找root目录

location是追踪URL,找到资源所在位置

#语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }=              	#用于标准url前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~            	#用于标准url前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
~              	#用于标准url前,表示包含正则表达式,并且区分大小写
~*            	#用于标准url前,表示包含正则表达式,并且不区分大写
不带符号   	  	 #匹配起始于此uri的所有的uri#\            	#用于标准url前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号#匹配优先级从高到低:
=, ^~, ~/~*, 不带符号

匹配越精确,优先级越高

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

=       精确匹配
不带符号     起始于根
^~        匹配开头的内容(不区分大小写)
 ~*       包含正则表达式(不区分大小写)
~         包含正则表达式(区分大小写)

重点哦

优先级比较:

题目理解   

location = / {[ configuration A ]
}location / {[ configuration B ]
}location /documents/ {[ configuration C ]
}
location ^~ /images/ {[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {[ configuration E ]
}

先找出能匹配的项,在比较优先级

访问路径选择:   题目与答案

第一题:

第二题

第三题

第四题

第五题

休息下,来点练习

如下请求内容,会匹配哪个Location?C

http://www.example.com/gallery/images/cat.png

A.Location /gallery {}

B.Location ~* ^/.(png|jpg)$ {}

C.Location ^~ /gallery/images {}

D.Location / {}

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

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

相关文章

学习笔记-Git

Git 问题一描述解决方法注意事项 问题一 描述 在commit和push的时候因为网络太慢了中途强行关闭了进程,而push的内容因为文件过大导致无法正常push 按照原本的流程在push的时候会提示失败,并且需要在解决了大文件之后重新push 而因为中途中断了&#x…

异常统一处理:BusinessException(自定义业务异常)

一、引言 本篇内容是“异常统一处理”系列文章的重要组成部分,主要聚焦于对 BusinessException 的原理解析与异常处理机制,并给出测试案例。 关于 全局异常统一处理 的原理和完整实现逻辑,请参考文章: 《SpringBoot 全局异常统一…

云性能测试方法:优化应用性能的关键步骤

随着云计算的普及和应用程序的不断发展,对于云平台上应用程序性能的测试变得愈发重要。云性能测试方法是评估应用程序在云环境中的性能表现并识别改进机会的关键步骤之一。在本文中,我们将探讨云性能测试的方法和步骤,以帮助开发人员和测试人…

挑战杯 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类

文章目录 0 简介1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径,图像尺寸,数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

使用Templ进行Go模板化

使用Templ在Go项目中高效生成动态内容的指南 动态内容生成是Web开发的一个基本方面。无论您是在构建网站、Web应用程序还是API,根据数据和模板生成动态内容的能力都至关重要。在Go编程世界中,一个名为“Templ”的强大工具简化了这一过程。在这份全面的指…

Query Rewrite —— 基于大模型的query扩展改写,PRF(论文)

本文介绍了一篇典型的 PRF (Pseudo-relevance feedback )思路的论文,用于利用LLM来做query改写,提升召回率,召回效果。 论文地址:Large Language Models are Strong Zero-Shot Retriever 一、PRF的流程 如…

DPDK应该如何入门学习?

01 写在前面 我的读者当中应该有一部分人是做 DPDK 相关的,我自己虽然现在已经不做 DPDK 了,但对这块仍然有兴趣,今天这篇文章就来总结下 DPDK 的技术栈。注意:这篇文章是小白文,不适合大神哦。 文章从 DPDK 的产生背…

Qt应用软件【协议篇】MQTT官方源码编译安装

文章目录 QT官方代码选择对应的版本Qt Creator编译代码代码下载与编译安装mqtt命令行方式编译与安装代码示例QT官方代码 https://github.com/qt/qtmqtt/tree/5.15.2 选择对应的版本 我们可以在github上切换分支,切换到我们需要的版本上 Qt Creator编译代码 代码下载与编译…

【Godot4自学手册】第十五节碰撞层Layer和Mas的使用

上一节中我学习了敌人的攻击,这一节将学习一些碰撞的有关知识。开始今天的学习。 一、碰撞层基本使用知识 在Godot4中的Collsion属性中有Layer和Mask两个属性,用于定义碰撞过滤的重要参数,它们可以允许控制哪些物体可以与该节点进行碰撞检测…

亚信安慧AntDB数据库为实时流数据构筑坚实防线

在数字化浪潮中,企业对实时流数据处理的依赖日益增强。在此背景下,AntDB数据库应运而生,提供一种创新性解决方案,专注于解决实时流数据处理中的数据容灾和一致性问题。AntDB的设计理念是确保在处理高吞吐量的流数据时,…

SICTF Round#3 の WP

Misc 签到 SICTF{1f4ce05a-0fed-42dc-9510-6e76dff8ff53} Crypto [签到]Vigenere 附件内容: Gn taj xirly gf Fxgjuakd, oe igywnd mt tegbs mnrxxlrivywd sngearbsw wakksre. Bs kpimj gf tank, it bx gur bslenmngn th jfdetagur mt ceei yze Ugnled Lystel t…

使用JDBC操作数据库(IDEA编译器)

目录 JDBC的本质 ​ JDBC好处 JDBC操作MySQL数据库 1.创建工程导入驱动jar包 2.编写测试代码 ​相关问题 JDBC的本质 官方(sun公司) 定义的一套操作所有关系型数据库的规则,即接口各个数据库厂商去实现这套接口,提供数据库驱动jar包我们可以使用这…

国际阿里云,想要使用怎么解决支付问题

在国内我们很多时候都需要用到国际阿里云,在国际阿里云需要使用就需要支付,自己办理visa卡比较麻烦,那么我们可以使用虚拟卡,虚拟卡办理快速简单 真实测评使用Fomepay的5347支持国际阿里云的支付,秒下卡,不…

(HAL)STM32F407ZGT6——24-1 IIC实验

一、I2C简介 对比串口通信,从全双工转为半双工,有应答,一根线可以同时接多个模块,单片机可以选择与特定模块通信,并且不会相互干扰。 简而言之,I2C为同步、串行、半双工的通信总线协议。 1、为何SDA与SCL使…

使用Windbg动态调试目标程序去分析异常的两实战案例分享

目录 1、前言 2、案例1:程序退出时弹出报错提示框 2.1、问题说明 2.2、到系统应用程序日志中看系统有没有自动生成dump文件 2.3、将Windbg附加到目标程序上进行动态调试 3、案例2:程序在运行过程中弹出ASSERT断言提示框 3.1、问题说明 3.2、将Wi…

获取discord上自己创建的服务器的服务器ID、频道ID以及discord的登录token(用于第三方登录)

在服务器图标上右键点击-》复制服务器ID 在频道上右键点击-》复制频道ID F12->手机模式-》application-》local storage-》填写过滤条件【token】 我开发的chatgpt网站: https://chat.xutongbao.top

25-k8s集群中-RBAC用户角色资源权限

一、RBAC概述 1,k8s集群的交互逻辑(简单了解) 我们通过k8s各组件架构,指导各个组件之间是使用https进行数据加密及交互的,那么同理,我们作为“使用”k8s的各种资源,也是通过https进行数据加密的…

爬虫基本库的使用(requests库的详细解析)

注:本文一共4万多字,希望读者能耐心读完!!! 前面,我们了解了urllib库的基本用法(爬虫基本库的使用(urllib库的详细解析)-CSDN博客)。其中,确实又不方便的地方。例如处理网页验证…

Android TV遥控器探索,Android 桌面应用程序

Android TV 的遥控功能是通过红外遥控器或蓝牙遥控器来实现的。下面分别介绍这两种遥控器的工作原理: 红外遥控器: 红外遥控器是最常见的 Android TV 遥控器类型之一。 红外遥控器通过发送红外信号来控制电视或机顶盒。每个按键都有一个特定的红外编码&…

【操作系统】12.文件系统是怎么管理的?

2.文件系统是怎么管理的? 2.1 文件系统的实现 2.1.1 文件系统层次结构 用户调用接口 文件目录系统 存取控制验证模块 逻辑文件系统与文件信息缓冲区 物理文件系统 辅助分配模块 设备管理程序模块 2.1.2 目录实现 线性列表 哈希表 2.1.3 文件实现 文件分配方式 连续…