《nginx》一、nginx核心指令

2023-10-27

nginx.conf 配置文件主要分为三部分:全局块、events块、http块

1、全局块核心参数:

-user USERNAME [GROUP]
解释:指定运行nginx的worker子进程的属主和属组,其中属组可以不指定
示例:user nginx nginx;

-pid DIR
解释:指定运行nginx的master主进程的pid文件存放路径
示例:opt/nginx/logs/nginx.pid

-worker_rlimit_nofile number
解释:指定worker子进程可以打开的最大文件句柄数
示例:worker_rlimit_nofile 20480;

-worker_rlimit_core size
解释:指定worker子进程异常终止后的core文件,用于记录分析问题, 注意nginx用户要对目录有写权限,不然无法记录。
示例:worker_rlimit_core 50M; working_directory /opt/nginx/tem;

-worker_processes number | auto
解释:指定nginx启动的worker子进程数量
示例:worker_processes 4; worker_process auto;

-worker_cpu_affinity cpumask1 cpumask2...
解释:将每个worker子进程与我们的cpu物理核心绑定
示例:
worker_cpu_affinity 0001 0010 0100 1000; 4个物理核心,4个worker子进程
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 8物理核心,8子进程
worker_cpu_affinity 01 10 01 10; 2物理核心,4子进程
备注:将每个worker子进程与特定的cpu物理核心绑定,优势在于:避免同一个worker子进程在不同的cpu核心上切换,导致缓存失效,降低性能;但是其并不能真正的避免进程切换

-worker_priority number
解释:指定worker子进程的nice值,以调整运行nginx的优先级,通常设定为负值,以优先调用nginx
示例:worker_priority -10;
备注:Linux默认进程的优先级是120,值越小越优先;nice设定范围为-20到+19

-work_shutdown_timeout time
解释:指定worker子进程优雅退出的超时时间
示例:worker_shutdown_timeout 5s;
备注:防止恶意请求,比如建立tcp连接后没有发请求或者没有回应,会在5s后关闭连接。避免占用系统资源。

-timer_resolution interval
解释:worker子进程内部使用的计时器精度,调用时间间隔越大,系统调用越少,有利于性能提升;反之,系统调用越多,性能下降
示例:worker_resolution 100ms;

-daemon on|off
解释:设定nginx的运行方式。默认为on,表示后台运行。off表示前台运行,会输出日志信息。前台用于调试,后台用于生产

-lock_file file
解释:负载均衡互斥锁文件存放路径

2、events块核心参数

-use [ select | poll | kqueue | epoll | /dev/poll | eventpot ]
nginx使用何种事件驱动模型。默认配置无,建议不配置,让nginx自己选择。

-worker_connections number
worker子进程能够处理的最大并发连接数。默认1024,建议65535。Linux可以打开的最大文件句柄数是65535,设置65535可以保证即使只有一个子进程也可以充分利用系统资源。

-accept_mutex [ on | off ]
是否打开负载均衡互斥锁。默认关闭。当用户向nginx发起请求时,主进程会向所有子进程询问,空闲的子进程将处理进程。当互斥锁打开时,由互斥锁轮流分配任务给子进程,可以提高效率。

-accept_mutex_delay time
互斥锁延迟时间。在互斥锁打开时生效,当互斥锁分配某个请求给子进程时,如果子进程由于繁忙不能处理时,会在延迟时间结束后分配给下一个子进程。可以避免请求长时间等待。

-muti_accept [ on | off ]
默认关闭。nginx子进程在某一时刻只能同时处理一个请求。打开后可以在同一时刻处理多个请求。实际情况下对提升性能不是很明显。

2.1、server段常用参数

-server_name name1 name2...
匹配请求服务器的域名,比如:www.nginx.com、.nginx.com(左侧匹配)、 www.nginx.(右侧匹配)、~^www.nginx…*%(正则)

匹配顺序为:完全匹配>左侧匹配>右侧匹配>正则表达式匹配

3、http块
3.1、location的用法

-location [ = | ~ | ~* | ^~ ] url { ... }
解释:

  • 1、=表示完全匹配
    示例:location = /images/ { … } ,可以匹配www.url.com/images, www.url.com/images/item,不可以匹配带参数的url,例如:www.url.com/images?name=k。需要注意的是www.url.com/images比www.url.com/images/item优先级要高。

  • 2、^~匹配到即停止搜索。不能与不带符号的相同url同时存在。
    示例:location ^~ /images/ { … } 和 location /images/ { … } 不能同时存在。

    # 当访问 www.test.com/bbs/ 时会匹配上 /usr/share/nginx/html/bbs/index.html
    location ^~ /bbs/ {
    root /usr/share/nginx/html;
    index index.html index.htm;
    }
    
  • 3、~正则匹配,区分大小写
    location ~ \.(jpg|gif)$ { ... } 匹配.jpg或.gif 结尾的文件,且区分大小写

  • 4、~*正则匹配,不区分大小写
    location ~* \.(jpg|gif)$ { ... }
    假设这里要访问http://xxx.com/test/img/face.JPG,只要服务器里有face.png一样可以匹配的到

  • 5、不带额外符号
    location / { … }

location优先级:(location =) > (location ^~ ) > (location ~ ) > (location ~* ) > (location /)
1).location = / { [ configuration A ]}          请求“/”匹配配置A,
 
2).location / {[ configuration B ]}             请求“/index.html”匹配配置B,
 
3).location /documents/ {[ configuration C ]}   请求“/documents/document.html”,2和3都匹配,3更精确匹配配置C
 
4).location ^~ /images/ {[ configuration D ]}   请求“/images/1.gif”,2和4和5都匹配,根据优先匹配配置D,
 
5).location ~* \.(gif|jpg|jpeg)$ { [ configuration E ] }  请求“/documents/1.jpg”,2和3和5都匹配,5更精确匹配配置E,

深入理解location中URL结尾的反斜线:

url后面到底跟不跟/?简单来说,带/表示目录,不带/表示文件。

  • 不带 / 当访问 www.nginx-test.com/test 时, Nginx 先找是否有 test 目录,如果有则找 test 目录下的 index.html ;如果没有 test 目录, nginx 则会找是否有 test 文件。

  • 带 / 当访问 www.nginx-test.com/test 时, Nginx 先找是否有 test 目录,如果有则找 test 目录下的 index.html ,如果没有它也不会去找是否存在 test 文件。

location /test {
 ...
}
location /test/ {
 ...
}
3.2、location段常用参数

-root path
文件根目录,不一定放在server段中,可以放的上下文环境是http、server、location、if。

-alias path
文件根目录。注意path后要以/结尾,且只能放在location段中。

location /image {
 alias /opt/nginx/static/;
}

当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/1.png

跟root区别是:root会将定义路径与url叠加,alias只取定义路径

location /image {
 root /opt/nginx/static/;
}
当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png
3.3、stub_status模块的用法

-stub_status 监控nginx状态
示例:location /url { stub_status; }
显示的参数解释:

  • 1、Active Connections 活跃的连接数量($connections_active)
  • 2、accepts 接受的客户端连接总数量
  • 3、handled 处理的客户端连接总数量
  • 4、requests 客户端总的请求数量
  • 5、Reading 读取客户端的连接数($connections_reading)
  • 6、Writing 响应数据到客户端的连接数($connections_writing)
  • 7、Waiting 空闲客户端请求连接数量($connections_waiting)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《nginx》一、nginx核心指令 的相关文章

  • Laravel 内存问题?

    各位 我在 DO 服务器上遇到这样的问题 我已经尝试了一切 整个网站在使用 Homestead 的 Linux 服务器上 100 正常工作 但上传后 它只能工作一次 在重新加载或刷新页面后会多次下降 我尝试增加 apache 服务器的内存
  • _dl_runtime_resolve -- 共享对象何时加载到内存中?

    我们有一个对性能要求很高的消息处理系统 最近我们注意到第一条消息比后续消息花费的时间要长很多倍 当它通过我们的系统时 会发生大量转换和消息增强 其中大部分是通过外部库完成的 我刚刚描述了这个问题 使用 callgrind 将仅一条消息的 运
  • 如何在 Linux 中显示进程状态(阻塞、非阻塞)

    有没有办法查询 Linux 进程表中进程的状态 以便能够演示执行查询时进程是正在运行还是被阻止 我的目标是从进程或程序的 外部 执行此操作 因为我希望从操作系统进程的角度来理解这一点 但欢迎任何想法 这是Python代码阻塞的过程 impo
  • shell中基于正则表达式的颜色突出显示输出

    我想知道是否可以用颜色突出显示与某些字符串匹配的 shell 命令的输出 例如 如果我运行 myCommand 输出如下 gt myCommand DEBUG foo bar INFO bla bla ERROR yak yak 我希望所有
  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • docker、nginx、django 以及如何提供静态文件

    目标 用于生产 django 网站部署的 docker 容器集 我在这个过程中遇到的问题是 通常 nginx 直接提供静态文件 根据我对使用 docker 的良好架构的理解 您将拥有一个用于 wsgi 服务器的容器 可能是gunicorn
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • 在 shell 脚本中将脚本目录更改为用户的 homedir

    在我的 bash 脚本中 我需要将当前目录更改为用户的主目录 如果我想更改为用户的foo主目录 从命令行我可以执行以下操作 cd foo 效果很好 但是当我从script它告诉我 bar sh line 4 cd foo No such f
  • 在linux中使用setcap [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 要将 cap net raw 功能添加到 例如 bin ping 我们使用以下命令 setcap cap net raw ep bin ping ep
  • 如何在 nginx 反向代理后面安全地检测 CakePHP 中的 SSL?

    CakePHP 我见过的所有版本 检查 SERVER HTTPS 查看请求是否是通过 HTTPS 而不是普通 HTTP 发出的 我使用 nginx 作为负载均衡器 后面是 Apache 应用程序服务器 由于 SSL 连接在负载均衡器处终止
  • 使用 xargs 时如何获取退出代码(并行)

    我制作了一个用于启动并行 rsync 进程的脚本 bin bash LIST 1 DEST DIR 2 RSYNC OPTS 3 echo rsyncing From SRC DIR To DEST DIR RSYNC OPTS RSYNC
  • 我可以告诉 Linux 不要交换特定进程的内存吗?

    有没有办法告诉 Linux 它不应该将特定进程的内存交换到磁盘 它是一个 Java 应用程序 所以理想情况下我希望有一种方法可以从命令行执行此操作 我知道您可以将全局交换性设置为 0 但这明智吗 您可以通过以下方式执行此操作姆洛克尔 2 h
  • Mongo:无法连接到服务器 127.0.0.1:27017 位于 src/mongo/shell/mongo.js:145

    当我尝试在 ubuntu 中的 shell 中运行 mongo 或打开 rockmongo 时 我看到以下错误 couldn t connect to server 127 0 0 1 27017 at src mongo shell mo
  • 如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?

    我们很快就会推出网站的移动版本 我们的完整网站和移动网站仅在主题上有所不同 即网址相同 唯一的区别在于前端 当用户访问我们的网站时 我们需要能够执行以下操作 1 检查 cookie 移动 true 或 false 以确定是否已定义完整与移动
  • 第一次如何配置postgresql?

    我刚刚安装了 postgresql 并在安装过程中指定了密码 x 当我尝试做的时候createdb并指定我收到消息的任何密码 createdb 无法连接到数据库 postgres 致命 用户密码身份验证失败 同样适用于createuser
  • 在 Windows 下使用 linux 实用程序的最佳方法是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Linux 实用程序 如 sed awk 和其他 shell 脚本功能 非常棒 但当我在 Windows 上进行开发并且无法使用其中任何一
  • 如何使用 bash 粘贴来自单独文件的列?

    我想用分隔符 合并不同的列表 第一个列表有 2 个单词 cat first one who 第二个列表有 10000 个单词 cat second languages more simple advanced home expert tes
  • 如何像C99一样使用make和编译?

    我正在尝试使用 Makefile 编译 Linux 内核模块 obj m main o all make C lib modules shell uname r build M PWD modules clean make C lib mo
  • 如何告诉 CMake 将构建文件放在哪里?

    我想告诉 CMake 将文件和文件夹输出到不同的文件夹而不是当前文件夹 我在下面讨论的是 CMake 生成的文件 文件 CMakeCache txt 目录 CMakeFiles 文件 生成文件 目录 bin 文件 cmake install
  • Docker容器内的动态监听端口

    我有一个应用程序 在使用其默认端口建立一些连接后 开始打开 侦听 新的随机端口来处理现有连接 然后删除它们 视频通话 它还在通信协议内交换其IP地址和端口 我能够解决IP地址问题 但仍然无法找到一种方法来动态告诉主机的IPTABLES在Do

随机推荐

  • vue中如何引入jquery详解

    用vue cli脚手架工具构建项目成功后 当需要引入JQ 可用以下方法 1 首先在package json里的dependencies加入 jquery 3 2 1 2 在终端里输入npm install jquery save dev 当
  • Reid Strong Baseline 代码解析

    目录 1 设置自己的数据集 1 1使用作者提供的dataset格式 1 2新建dataset格式 2 测试时设置是否只采用跨相机的样本 3 训练 3 1 修改模型 3 1 1参数解读 3 1 2使用自己的模型 4测试 5本篇博客的不足 1
  • 基于Python+OpenCV的视频字符化(深度学习+机器视觉)含全部工程源码

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 OpenCV环境 模块实现 1 视频读取及处理 2 色素块识别与替换 3 视频合成 4 操作系统上的实现 系统测试 工程源代码下载 其它资料下载 前言 本项目利
  • SQL - Navicat查看SQL执行计划

    我们在工作中肯定写过sql语句 也会进行一下sql语句的优化 在优化sql语句里看过相应的explain 在进行sql语句优化的时候 理解执行计划中各个参数的意思 弄明白执行的顺序 对sql优化有很大的帮助 1 通过 Explain 命令查
  • nestjs知识系列:使用postman测试websocket

    原文 Using WebSocket Requests Postman Learning Center websocket socket emit socket on等api详解 Using WebSocket Requests Postm
  • Linux Oracle使用常用命令

    ps ef grep oracle 查看Oracle启动的进程 常被用作查看Oracle服务是否已启动 登录Oracle sqlplus nolog conn as sysdba sqlplul as sysdba sqlplul as s
  • linux安装mysql8.0详解

    linux安装mysql8 0 一 安装前准备工作 二 安装mysql 三 配置mysql 一 安装前准备工作 1 卸载系统自带的mariadb root mesdb01 dbdata rpm qa grep mariadb mariadb
  • shell编程

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net Leo1120178518 article details 100055607 She
  • MUI扫描功能的实现

    开发手机APP时经常需要用到扫描二维码 条码的功能 在使用MUI框架开发时 我们可以使用H5plus封装好的Barcode类 Barcode模块管理条码扫描 提供常见的条码 二维码及一维码 的扫描识别功能 可调用设备的摄像头对条码图片扫描进
  • 整合springBoot+SSM及框架说明

    目录 1 关于springBoot的说明 1 1 springBoot的定义 1 2 springBoot的作用 2 关于springMVC的说明 2 1 springMVC的作用 3 Spring的的作用 4 mybatis的作用 一 创
  • 轻松搞懂Linux中的用户管理

    文章目录 概念 用户账户 用户组 用户权限 用户管理工具 概念 用户管理是Linux系统管理员必须掌握的重要技能之一 Linux系统是一个多用户操作系统 可以支持多个用户同时使用 每个用户拥有自己的账户和权限 因此管理员需要了解如何创建 管
  • vue之父子组件间通信实例讲解(props、$ref、$emit)

    组件是 vue js 最强大的功能之一 而组件实例的作用域是相互独立的 这就意味着不同组件之间的数据无法相互引用 那么组件间如何通信 也就成为了vue中重点知识了 这篇文章将会通过props ref和 emit 这几个知识点 来讲解如何实现
  • vue自定义指令

    除了核心功能默认内置的指令 v model 和 v show Vue 也允许注册自定义指令 有的情况下 对普通 DOM 元素进行底层操作 这时候就会用到自定义指令 下面定义了一个v test指令绑定数据name
  • jupyter的安装步骤

    1 安装python文件 首先去官网python去下载python的安装包 点击donwload 选择合适的系统 这里我是windown系统 点击进去 如图找到有installer的去下载 不建议下载最新版本的 会有兼容问题 2 安装pyt
  • Qgis python开发教程(一)Introduction

    最近工作中用到Qgis开发 找了网上一圈 关于python的开发很少 最后找到官方API 官方API很不错 但是英文难免麻烦一些 自己尝试翻译出来并实践一下 以备自己后续的学习 并非逐字逐句翻译 就是把自己认为重点的地方记录摘要 水平有限
  • C++建造者模式:Builder Pattern

    建造者模式又称生成者模式 该模式是一种创建型设计模式 能够分步骤创建复杂对象 该模式允许使用相同的创建代码通过不同的创建过程生成不同类型的对象 建造者模式 Builder 所构建的对象一定是庞大而复杂的 并且一定是按照既定的制造工序将组件组
  • Android判断是否安装某App

    开发过程中会遇到跳转其他App的情况 诸如支付宝支付跳转 更新跳转等 跳转之前需要判断手机是否安装该App 以下以应用宝为例 public boolean isMobile spExist PackageManager manager th
  • AI驱动的大数据创新:探索软件开发中的机会和挑战

    文章目录 机会 数据驱动的决策 自动化和效率提升 智能预测和优化 个性化体验 挑战 数据隐私与安全 技术复杂性 数据质量和清洗 伦理和社会问题 案例 智能代码生成工具 总结 个人主页 程序员 小侯 CSDN新晋作者 欢迎 点赞 评论 收藏
  • 前端三大件基础知识汇总【自用】

    一 HTML5和CSS3 HTML5 CSS3 二 Javascript基础 1 基础语法 2 Javascript 对象 3 DOM 4 Javascript 事件 5 BOM 补充 图片切换练习 1 clearInterval 可以接收
  • 《nginx》一、nginx核心指令

    nginx conf 配置文件主要分为三部分 全局块 events块 http块 1 全局块核心参数 user USERNAME GROUP 解释 指定运行nginx的worker子进程的属主和属组 其中属组可以不指定 示例 user ng