Nginx配置详细解释

文章目录

  • 一、配置详细解释
    • 关闭版本
    • 修改启动的进程数
    • 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 ...;  
#对哪种浏览器禁用长连接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【vue-admin-template】设置前后端访问地址

最近在使用vue-admin-template模板进行二次开发,GitHub地址: Vue-Admin-Template。 如果要在该项目中设置前后端的访问IP及端口,可以这样做: 前端:在vue.config.js中: 后端:在request.js中&…

CorelDRAW 全称“CorelDRAW Graphics Suite

箭头在各种场景中被广泛使用。在设计中,设计师可以根据设计的目的和受众,巧妙地运用箭头来传达信息、创造视觉效果或引导观者的注意力。在CDR软件中可以为设计添加箭头,那具体该怎么做呢?下面由我带大家一起来了解CoreIDRAW箭头形…

【SpringBoot + Vue 尚庭公寓实战】项目介绍(一)

【尚庭公寓SpringBoot Vue 项目实战】项目介绍(一) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】项目介绍(一)1、项目业务概述2、移动端介绍3、 后台管理系统4、 核心业务流程5、项目技术概述5、数据库设计 1、项目业务概述 …

青否数字人直播源码超级管理后台操作步骤!

青否数字人直播源码超级管理后台,我们将详细介绍一下数字人的管理后台的详细操作步骤! 1.管理端入口 2.管理后台预览 账号管理,模特管理,声音管理,任务管理,卡类管理,代理商,克隆端 …

【WP|9】深入解析WordPress [add_shortcode]函数

add_shortcode 是 WordPress 中一个非常强大的函数,用于创建自定义的短代码(shortcodes)。短代码是一种简洁的方式,允许用户在内容中插入动态的、可重用的功能。通过 add_shortcode,开发者可以定义自己的短代码&#x…

xstream运用,JAVA对象转xml,xml转JAVA对象

目录 xstream 优点: 缺点: XStream的应用场景 用到的依赖 代码实现 xml标签对应的实体类 Header Package Request Response TradeInfo 工具类 XmlUtils 执行结果 xstream XStream是一个Java类库,主要用于将对象序列化为XML&#xf…

Cochrane Library循证医学数据库的介绍及文献下载

今天要讲的数据库是Cochrane Library循证医学数据库,我们先来了解一下该数据库: Cochrane Library是国际Cochrane Collaboration的主要产品,由英国Wiley InterScience公司出版发行。是一个提供高质量证据的数据库,是循证医学的证…

如何在centos中关闭swap分区

目录 前言 为什么要关闭 Swap 分区? 如何在 CentOS 中临时关闭 Swap 分区? 如何在 CentOS 中永久关闭 Swap 分区? 验证swap是否被关闭 潜在的风险和注意事项 总结 前言 Swap 分区是 Linux 系统中用于扩展物理内存的一种机制。在物理内存…

vs code 导出插件 导入到新电脑上

1. 在 现在的电脑上 导出插件 在vscode 上执行 code --list-extensions > extensions.txt 然后项目的目录就有了一个文件 2. 将他复制到新电脑上,把文件放在项目的最外层(跟上面的目录一样) 执行命令 Get-Content extensions.txt | ForE…

华硕NUC 14 Pro+ :科技与艺术相得益彰

什么样的迷你主机可以称之为“艺术品”?让我们一起认识NUC 14 Pro,看科技与艺术可以交汇出怎样的独特韵味? 科技与美学的邂逅 华硕NUC 14 Pro不仅是一台性能强劲的电脑主机,更像是一件可以在桌面“展出”的艺术品。精致小巧的体积…

【C++进阶】深入STL之vector:深入研究迭代器失效及拷贝问题

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:初步了解vector 🌹🌹期待您的关注 🌹🌹 ❀STL之vector 📒1. 迭…

聚焦热点-“十五五”规划 国家发改委前期研究课题汇总

聚焦热点-“十五五”规划 国家发改委前期研究课题汇总 随着“十五五”规划的脚步日益临近,国家发改委及地方相关机构已启动了前期研究工作,以确保地方规划能够准确把握时代脉搏,推动经济社会的高质量发展。 2023年12月17日至18日&#xff0…

10.爬虫---XPath插件安装并解析爬取数据

10.XPath插件安装并解析爬取数据 1.XPath简介2.XPath helper安装3.XPath 常用规则4.实例引入4.1 //匹配所有节点4.2 / 或 // 匹配子节点或子孙节点4.3 ..或 parent::匹配父节点4.4 匹配属性4.5 text()文本获取4.6 属性获取4.7 属性多值匹配 1.XPath简介 XPath是一门在XML文档中…

【WP】猿人学13_入门级cookie

https://match.yuanrenxue.cn/match/13 抓包分析 抓包分析发现加密参数是cookie中有一个yuanrenxue_cookie 当cookie过期的时候&#xff0c;就会重新给match/13发包&#xff0c;这个包返回一段js代码&#xff0c;应该是生成cookie的 <script>document.cookie(y)(u)(a…

RocketMQ可视化界面安装

RocketMQ可视化界面安装 **起因&#xff1a;**访问rocketmq-externals项目的git地址&#xff0c;下载了源码&#xff0c;在目录中并没有找到rocketmq-console文件夹。 git下面文档提示rocketMQ的仪表板转移到了新的项目中&#xff0c;点击仪表板到新项目地址&#xff1b; 下载…

flutter封装日历选择器(单日选择)

简单封装&#xff1a; 引入库&#xff1a;table_calendar import package:generated/l10n.dart; import package:jade/utils/JadeColors.dart; import package:jade/utils/Utils.dart; import package:util/easy_loading_util.dart; import package:flutter/material.dart; im…

【Python报错】已解决ModuleNotFoundError: No module named ‘gensim’

成功解决“ModuleNotFoundError: No module named ‘gensim’”错误的全面指南 在Python编程中&#xff0c;尤其是进行文本挖掘和自然语言处理&#xff08;NLP&#xff09;时&#xff0c;gensim库是一个常用的工具&#xff0c;用于主题建模、文档相似度计算、词向量表示&#x…

泽众云真机-上线海外机型测试专栏

泽众云真机平台&#xff0c;2024上半年70机型升级&#xff0c;也包括热门的海外机型。 但是&#xff0c;运营客服反馈&#xff0c;用户找不到平台海外机型在哪里&#xff0c;我们发现海外机型排列位置有问题&#xff0c;用户不易发现。目前问题已解决&#xff0c;上线海外机型测…

应对800G以太网挑战:数据中心迁移

在过去几年中&#xff0c;云基础设施和服务的大规模使用推动了对更多带宽、更快速度和更低延迟性能的需求。交换机和服务器技术的改进要求布线和架构随之调整。因此&#xff0c;800G以太网对数据中心迁移的需求&#xff0c;特别是对速率&#xff08;包括带宽、光纤密度和通道速…

MySQL学习——选项文件的使用

MySQL 的许多程序都可以从选项文件&#xff08;有时也被称为配置文件&#xff09;中读取启动选项。选项文件提供了一种方便的方式来指定常用的选项&#xff0c;这样你就不必每次运行程序时都在命令行上输入这些选项。 要确定一个程序是否读取选项文件&#xff0c;你可以使用 -…