当前位置: 首页 > news >正文

《nginx》一、nginx核心指令

一、main段核心参数:

-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
解释:负载均衡互斥锁文件存放路径

二、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子进程在某一时刻只能同时处理一个请求。打开后可以在同一时刻处理多个请求。实际情况下对提升性能不是很明显。

三、server段常用参数

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

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

四、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/ {
 ...
}

五、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

六、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)

相关文章:

  • Hadoop环境快速搭建《简单无脑步骤版》
  • TypeScript 高级类型
  • vulnhub BTRSys: v2.1
  • mysql使用小记--group_concat()、sum()
  • SpringBoot学习笔记(五)IOC
  • 微信、QQ防撤回
  • RKMPP库快速上手--(三)MPP解码入门
  • torch.nn.interpolate—torch上采样和下采样操作
  • DBCO-PEG-OPSS/OPSS-PEG-DBCO/二苯并环辛炔聚乙二醇修饰邻吡啶二硫
  • SpringCloud与SpringCloudAlibaba的比较
  • PostgreSQL修炼之道笔记之准备篇(四)
  • Springboot整合Redis集群实战详解
  • 聚乙烯亚胺偶联乳清白蛋白/肌白蛋白/豆清白蛋白/蓖麻蛋白/豌豆白蛋白1b ( PA1b)科研试剂
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • springBoot整合SqlSessionTemplate使用
  • [数据结构]链表的实现在PHP中
  • 4个实用的微服务测试策略
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • co模块的前端实现
  • docker容器内的网络抓包
  • ERLANG 网工修炼笔记 ---- UDP
  • JavaScript-Array类型
  • Java-详解HashMap
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Lsb图片隐写
  • ng6--错误信息小结(持续更新)
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue 个人积累(使用工具,组件)
  • vuex 笔记整理
  • 闭包--闭包之tab栏切换(四)
  • 基于遗传算法的优化问题求解
  • 聊聊flink的BlobWriter
  • 实现简单的正则表达式引擎
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​力扣解法汇总946-验证栈序列
  • ​用户画像从0到100的构建思路
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #define与typedef区别
  • (C#)获取字符编码的类
  • (Ruby)Ubuntu12.04安装Rails环境
  • (zt)最盛行的警世狂言(爆笑)
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (区间dp) (经典例题) 石子合并
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)C#调用WebService 基础
  • (转)大型网站架构演变和知识体系
  • ******之网络***——物理***
  • .NET 4.0中的泛型协变和反变
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net wcf memory gates checking failed
  • .net 托管代码与非托管代码