Nginx配置详细解释

news2025/1/19 17:08:58

文章目录

  • 一、配置详细解释
    • 关闭版本
    • 修改启动的进程数
    • cpu与work进程绑定
    • nginx进程的优先级
    • work进程打开的文件个数
    • event事件
  • 二、Http设置
    • 协议配置说明
    • mime
    • 虚拟主机
    • alias
    • location
    • access模块
    • 验证模块
    • 自定义错误页面
    • 自定义日志存放位置
    • try_files检测文件是否存在
    • 长连接


一、配置详细解释

Nginx的配置文件
在这里插入图片描述

  • 配置文件由指令和指令块构成
  • 每条指令以;分号结尾,指令与值之间以空格符号分隔
  • include语句允许组合多个配置文件以提升可维护性
  • include语句允许组合多个配置文件以提升可维护性
  • pid号 /run/nginx.pid(yum安装)
  • 主配置文件 /etc/nginx/nginx.conf
  • 子配置文件 /etc/nginx/conf.d/*.conf

关闭版本

在主配置文件中http语句中加上 server_tokens off; 然后重新载入配置文件即可。
在这里插入图片描述
在这里插入图片描述
验证成功

修改启动的进程数

在这里插入图片描述
在这里插入图片描述

cpu与work进程绑定

将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。
这种称之为cpu的亲缘性。
在这里插入图片描述
注意:要绑定一起绑定
worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号—第3号CPU

nginx进程的优先级

即调整worker进程的优先级;工作进程的优先级默认为0,工作进程的优先级为-20~19
在主配置文件中加上worker_priority x;
在这里插入图片描述
验证成功

work进程打开的文件个数

worker_rlimit_nofile 65536;
上述所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制。需要与ulimit -n 或者limits.conf的值保持一致。
在这里插入图片描述

event事件

events {
   worker_connections  65536;  
   use epoll;
   accept_mutex on; 
   multi_accept on; 
 }

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

二、Http设置

http是一个大的语句块,包含若干个小的语句块

协议配置说明

在这里插入图片描述

 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  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    server_tokens  off;
   
    include /etc/nginx/conf.d/*.conf;

log_format 定义日志的格式,并取名为main;
access_log /var/log/nginx/access.log main;定义日志存放的位置,并采用main格式
sendfile on; 开启高性能的文件传输机制,可以直接在内核空间和应用程序空间之间传输数据,而无需将数据从内核空间复制到应用程序空间,从而提高了文件传输的效率和性能。零拷贝技术
tcp_nopush on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。
tcp_nodelay off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户响应报文。
keepalive_timeout 65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同
include mime.types; #导入支持的文件类型
default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件
include /etc/nginx/conf.d/*.conf;#表明子配置文件所在的位置。

mime

此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上。
/etc/nginx/mime.types
在这里插入图片描述

虚拟主机

将一台主机虚拟成多台主机,有三种方式,基于端口,基于IP地址,基于域名。
1.基于端口
在这里插入图片描述
root指定了主页文件的位置
在这里插入图片描述

2.基于域名
在这里插入图片描述
在这里插入图片描述
3.基于IP地址
在这里插入图片描述
在这里插入图片描述

alias

在这里插入图片描述
在这里插入图片描述
验证成功

location

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

基本语法规则
location [ = | ~ | ~* | ^~ ] uri { … }

  1. = 用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
  2. ^~ 用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
  3. ~ 用于标准uri前,表示包含正则表达式,并且区分大小写
  4. ~* 用于标准uri前,表示包含正则表达式,并且不区分大写
  5. 不带符号 匹配起始于此uri的所有的uri

匹配优先级从高到低
=, ^~, ~ / ~*(谁写在前面谁优先级高), 不带符号

特别说明:
~* 用来对用户请求的uri做模糊匹配,uri中无论都是大写、都是小写或者大小写混合,此模式也都会匹配,通常使用此模式匹配用户request中的静态资源并继续做下一步操作,此方式使用较多注意: 此方式中,对于Linux文件系统上的文件仍然是区分大小写的,如果磁盘文件不存在,仍会提示404。
~* 虽然 不区分大小写 但是系统的文件系统区分大小写。

location遍历规则
在这里插入图片描述
解释:优先遍历未开启正则的三种形式,如果匹配上=字符串这种形式,意味着精确匹配,则立即停止匹配。
如果没有匹配上,则开始其他两种形式的匹配,并记住最长字符的匹配。如果匹配上^ ~的形式,则停止匹配,如果最长匹配不是^ ~,则需要继续进行正则匹配,如果没有正则匹配,则返回使用最长匹配。

access模块

访问控制模块,用于控制访问的主机地址。可以用精准的IP地址,也可以用网段。同时,注意这个模块也是一旦命中就不会往下继续匹配了,所以范围越小写的往上。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证模块

htpasswd 此命令来自于httpd-tools包中,没有的话自己安装下即可。
如何生成账号和用户

htpasswd -c  文件路径 姓名        	 交互式生成密码
htpasswd -bc 文件路径 姓名 密码   		直接将密码跟在后面 

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
验证成功。

自定义错误页面

我们可以改变默认的错误页面,同时也可以用指定的响应状态码进行响应。

error_page code ... [=[response]] uri;
页面错误代码  
error_page    固定写法
code          响应码
=             可以将响应码转换
uri           访问连接

在这里插入图片描述
在这里插入图片描述
验证成功

自定义日志存放位置

默认日志文件放在/var/log/nginx下面,但一台真实主机会虚拟成多台主机,故将各自虚拟主机的日志文件分开放就很有需要。
在这里插入图片描述
当然,错误日志可以规定当达到什么级别才记录。

error_log       文件路径      级别(info  debug等  可以忽略不写)

在这里插入图片描述

try_files检测文件是否存在

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

在这里插入图片描述
注意如果没有托底的/about文件将会出现50X错误,所以一定要设置。
在这里插入图片描述
在这里插入图片描述
验证成功。

优化操作:如果没有托底界面,可以自定义响应码返回,然后结合重定义错误界面,将客户引导至新的界面。

server{
        listen 80;
        server_name  www.pc.com;
        root /data/nginx/pc;
        location  / {
        root      /data/nginx/pc/;
        try_files $uri  $uri.html $uri/index.html =489;
        }
        error_page 489 /40x.html;
        location = /40x.html {
        root    /data/nginx/error/;
        }
}

长连接

http 基于tcp协议,需要三次握手再传输数据。肯定不想一次三次握手才能下载一个资源,要一次三次握手下载多个资源。
这个时候就需要用到长连接。
keepalive_timeout timeout [header_timeout];
#设定保持连接超时时长,0表示禁止长连接,默认为75s,通常配置在http字段作为站点全局配置。
keepalive_requests number;
#在一次长连接上所允许请求的资源的最大数量,默认为100次,建议适当调大。

keepalive_requests 3;
#最大下载三个资源就会断开
keepalive_timeout 60 65;   #只能有一个空格 
#开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。
Keep-Alive:timeout=60  #浏览器收到的服务器返回的报文
#如果设置为0表示关闭会话保持功能,将如下显示:
Connection:close  #浏览器收到的服务器返回的报文

在这里插入图片描述
对某种浏览器禁用长连接

keepalive_disable none | browser ...;  
#对哪种浏览器禁用长连接

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

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

相关文章

Android Studio插件开发 - Dora SDK的IDE插件

IDE插件开发简介 Android Studio是一种常用的集成开发环境(IDE),用于开发Android应用程序。它提供了许多功能和工具,可以帮助开发人员更轻松地构建和调试Android应用程序。 如果你想开发Android Studio插件,以下是一…

计算病理学的视觉语言基础模型| 文献速递-视觉通用模型与疾病诊断

Title 题目 A visual-language foundation model for computational pathology 计算病理学的视觉语言基础模型 01 文献速递介绍 数字病理学的快速普及和深度学习的进步使得可以开发出针对各种疾病和患者群体的各种病理学任务的强大模型。然而,由于医学领域标签…

解锁破解2024最新版会声会影,序列号注册码大揭秘!

会声会影2024是一款专业的视频编辑软件,它为用户提供了丰富的功能和工具,让用户能够轻松地制作出精美的视频作品。如果你是一位热爱视频制作的朋友,那么你一定不能错过这款软件。本文将为大家介绍会声会影2024的序列号注册码以及如何购买和使…

安徽某高校数据挖掘作业4-5 (与一些碎碎念)

1. 编写程序求函数、、的极限。 解答: import sympy as sp# 定义符号变量 x x sp.symbols(x)# 定义函数 f1 sp.sin(20 * x) / x f2 (1 4 * x)**(2 / x) f3 (1 4 / x)**(2 * x)# 计算极限 limit1 sp.limit(f1, x, 0) limit2 sp.limit(f2, x, 0) limit3 sp…

文件上传漏洞之upload-labs

前提: 本文中的以xshell命名的均为以密码为admin的一句话木马,而shell命名的则是由冰蝎工具生成的木马。 pass-01:js前端验证 测试性的上传一个一句话木马,发现被拦截了,而且根据推测大概率是前端检测,于…

开发人员申请Claude API Key教程:轻松获取Claude 3模型API Key并开发部署自己的Claude 3聊天应用

开发者如何申请并使用ClaudeAPI开发部署自己的Claude 3聊天应用 ClaudeAPI是由Anthropic公司开发的一款基于Claude模型的自然语言处理API服务。它可以帮助开发者在自己的应用中集成先进的自然语言理解和生成能力。本文将介绍如何申请和使用ClaudeAPI。 一、注册Anthropic账号 …

订单排队与链动模式塑造社交电商新格局

在数字化浪潮中,社交电商凭借其独特的魅力与潜力,正逐渐崭露头角。本文将解读一种融合了订单排队与链动模式的创新商业模式。这一模式旨在通过提高消费者复购率,优化销售流程,从而推动销售增长,塑造社交电商新生态。 …

【栈】736. Lisp 语法解析

本文涉及知识点 栈 LeetCode736. Lisp 语法解析 给你一个类似 Lisp 语句的字符串表达式 expression,求出其计算结果。 表达式语法如下所示: 表达式可以为整数,let 表达式,add 表达式,mult 表达式,或赋值的变量。表达…

Nacos注册中心 --学习笔记

Nacos注册中心是什么? 想象一下一个繁忙的购物中心,里面有很多商店,每个商店都在某个位置提供不同的商品或服务。这个购物中心有一个信息台,人们可以在这里查询任何商店的位置和提供的服务。等到有新的商店开张,或者现…

运维工具 - SFTP 和 FTP 的区别?

SFTP 和 FTP 的区别有三点 连接方式 SFTP 是在客户端和服务器之间通过 SSH 协议建立的安全连接来传输文件,而 FTP 则是 TCP 端口 21 上的控制连接建立连接。 安全性 SFTP 使用加密传输认证信息来传输数据,因此 SFTP 相对于 FTP 更安全的。 效率 SF…

DevOps全面综述:从概念到实践

一、背景与概述 1.1 DevOps的起源与发展 DevOps(Development and Operations的缩写)是软件工程领域中的一种文化和实践方法,旨在促进开发团队与运维团队之间的协作,从而实现更高效、更可靠的软件交付。DevOps起源于敏捷软件开发方…

应届生毕业择业必看!这三个朝阳行业错过就晚了!2024普通人赚钱的行业、2024最适合创业的项目

俗话说“男怕入错行,女怕嫁错郎”。尤其是对于现在的年轻人来说,一个好的处于上升期的行业,所能带来的收益是无法估量的。所以在这个大学生即将步入社会的毕业季,我们一起看看国家统计局发布的这份数据报告,来分析哪些…

机器学习18个核心算法模型

1. 线性回归(Linear Regression) 用于建立自变量(特征)和因变量(目标)之间的线性关系。 核心公式: 简单线性回归的公式为: , 其中 是预测值, 是截距, 是斜…

动态规划——浅谈dp如何入门,以及入门题目(值得收藏,持续更新)

前言 动态规划如何入门?如果你问我怎么精通,那我只能告诉你我也不知道,但你要问我怎么入门,那我就可以和你说道说道了. 我并没有能力也不想说你看完就会了,我只是想给大家开个头,你只要知道怎么写了怎么去思考了,你就可以通过刷题来强化思维了,能走多远就看各位的造化了! 动…

【全开源】知识库文档系统(ThinkPHP+FastAdmin)

📚知识库文档系统:解锁知识的无限可能 一款基于ThinkPHPFastAdmin开发的知识库文档系统,可用于企业工作流程的文档管理,结构化记录沉淀高价值信息,形成完整的知识体系,能够轻松提升知识的流转和传播效率&a…

QT: 读写ini配置文件(实现qml界面登录,修改)

目录 一.功能介绍 二.暴露属性 三.指定INI文件的路径和格式。 四.登录操作 1.检查INI文件中是否含有登录信息; 2.读取存储的ID; 3.读取存储的密码; 4.成功返回1;失败返回2; 五.修改账号 1.检查INI文件中是否含有登录信…

C# Onnx E2Pose人体关键点检测

C# Onnx E2Pose人体关键点检测 目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:inputimg tensor:Float[1, 3, 512, 512] --------------------------------------------------------------- Outputs ---…

pycharm链接auto al服务器

研0提前进组,最近阻力需求是把一个大模型复现,笔者电脑18年老机子,无法满足相应的需求。因此租用auto dl服务器。本文记录自己使用pycharm(专业版)链接auto dl期间踩过的坑。 1.下载pycharm专业版 这一步不解释了&am…

智慧启航 网联无限丨2024高通汽车技术与合作峰会美格智能分论坛隆重举行

5月30日下午,以“智慧启航 网联无限”为主题的2024高通汽车技术与合作峰会&美格智能分论坛在无锡国际会议中心隆重举行,本次论坛由高通技术公司与美格智能技术股份有限公司共同主办,上海市车联网协会、江苏省智能网联汽车产业创新联盟、江…

Android 如何保证开启debug模式之后再启动

很多时候会需要debug看Android启动时候的一些数据,但很多时候会存在自己开启debug后app已经过了自己要debug的那段代码的时机了。 那么怎么样可以保证一定能让启动后不会错过自己要debug的那段代码执行的时机呢? 可以用下面这行命令,其中co…