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

Nginx:配置文件详解

一、Nginx配置文件

main配置段:全局配置

events段:定义event工作模式

http {}:定义http协议配置

支持使用变量:
        内置变量:模块会提供内建变脸定义
        自定义变量:set var_name value

二、 主配置段的指令

1、正常运行的必备配置

1、user USERNAME [GROUPNAME];            #指定运行worker进程的用户 和组,例如:user nginx nginx;

2、pid /path/to/pid_file;        #指定nginx的pid文件;

3、worker_rlimit_nofile;        #指定一个worker进程所能够打开的最大文件句柄数;

4、worker_rlimit_sigpending;         #指定每个用户能够发往worker的信号的数量;

2、优化性能相关的配置

1、worker_processes #:          #worker线程的个数;通常应该为物理CPU核心个数减1;

2、worker_cpu_affinity cpumask ...;

  •                     
  •                   CPUMASK
  •                         0001
  •                         0010
  •                         0100
  •                         1000 
  •                     例如: worker_cpu_affinity 00000001 00000010 00000100;

3、timer_resolution t ;           #  计时器解析度,降低此值,柯减少gettimeofday()系统调用次数

4、worker_priority nice;         #对应的nice值-20 - 19,优先级对应100-139

3、事件相关的配置

1、pt_mutex {on|off} ;        (互斥锁)内部调用用户 请求至各worker时用的负载均衡锁;on时表示能让多个worker轮流地、序列化地与响应新请求;

2、lock_file /path/to/lock_file ;         #accept_mutex用到的锁文件

3、accept_mutex_delay #ms;        #work进程繁忙时锁等待多长事件

4、use [epoll|rgsig|select|poll];;        #定义使用的事件模型;建议让Nginx自动选择;

5、worker_connections;        #每个worker进程所能够响应的最大并发请求数;

4、用于调试 

1、daemon {off|on};        #是否以守护进程的方式运行nginx,调试时应该设置为off

2、master_process {on|off};        #是否以master/worker模型来运行nginx

3、error_log /path/to/error_log level;        #错误日志文件及其级别;处于调试目的,可以使用debug级别,但此级别只有在编译nginx时手机用--with-debug选项才有效; 

三、Nginx作为Web服务器使用配置

http{}:由ngx_http_core_module模块来引入
配置格式

http配置:http core 配置一个静态web服务器ngx_http_core_module配置框架:http {upstream {.,..}server {listen IP:PORT;# 虚拟主机location /URL {root "/path/to/dir"……if ...{...}}}     #每个Srever类似于httpd中的<VirtualHost>server {……}}#注意:与httpd相关的指令仅能通够放置于http、server、location、upstream、if上下文指令仅应用于这5中上下文

 四、虚拟主机配置相关指令

1、server{}  定义一个虚拟主机

​server{listen 8080;server_name www.hongyang.com;root "/vhosts/web1";}​

访问:

2、listen 监听端口

完整格式:listen address[:port] [default_server] ssl 
  backlog=number: 指明TCP协议backlog队列的大小。默认为-1,表示不设置;
  rcvbuf=size:设定监听句柄的SO_RCVBUF参数;

​server{listen 8080;server_name www.hongyang.com;root "/vhosts/web1";}​

3、server_name 主机名

​server{listen 8080;server_name www.hongyang.com;root "/vhosts/web1";}​
#				(1) 先做精确匹配;www.hongyang.com: 
#				(2) 左侧通配符匹配,例如:*.hongyang.com; 
#				(3) 右侧通配符匹配,例如:www.*;
#				(4) 正则表达式匹配,例如: ~^.*\.hongyang\.com$
#				(5) default_server

4、root  Path 设置资源路径映射

root:用于指明请求的URL所对应的文档的根目录路径

	location /imag/ {root "/web/imgs/";}

5、location 根据用户请求的URL匹配定义的location

允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;

#					=: 精确匹配检查;
#					~: 正则表达式模式匹配,区分字符大小写;
#					~*:正则表达式模式 匹配,不区分字符大小写;
#					^~:URI的前半部分匹配,不检查正则表达式;匹配优先级:精确匹配(=)、^~、~和~*、由不带符号的URL进行左侧匹配;

6、aliias path 用于配置段,定义路径别名

	location /imags/ {root "/web/imgs/";}#访问上面的地址就相当于访问# http://www.hongyang.com/imags/a.jpg --> /vhosts/web/images/a.jpglocation /imags/ {alias /www/pictures/;}# http://www.hongyang.com/imags/a.jpg --> /www/pictures/a.jpg#     注意:root表示指明路径为对应location的“ /” URL;alias表示路径映射,即location中的URL是相对于alias所指明的路径而言;

7、index 默认页面配置

location / {index  index.html index.htm;}# 当index.html 没有影响的时候,就会用index.htm来响应

8、err_page  根据http状态码重定向错误页面

location{error_page  404   /404.html}# 当index.html 没有影响的时候,就会用index.htm来响应
# =[code]: 以指定的响应码进行响应;省略code表示以新资源的响应码为响应码;location{error_page  404 = 200  /404.html}

9、基于IP访问控制

  server{listen 8080;server_name www.hongyang.com;location{root "/vhosts/web1";# deny all;allow 192.158.5.128/16;}}# deny禁止哪些IP进行访问:格式 IP/Network
# allow允许哪些IP进行访问    格式 IP/NetWork

10、基于用户的访问控制

    server{listen 8080;server_name www.hongyang.com;location /  {root "/vhosts/web1";auth_basic "Only For VIP"auth_basic_user_file /app/nginx/users/.htpasswd;}}# 自己生成密钥 需要安装htttpd
# htpasswd -c -m /app/nginx/users/.htpasswd tom

效果

11、SSL配置

#生成私钥->生成CA证书
# cd /etc/pki/CA
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
# touch serial index.txt
# echo 01 > serial#生成Nginx私钥
# (umask 077; openssl genrsa -out nginx.key 1024)
# openssl req -new -key nginx.key -out nginx.csr#使用CA证书签署
# openssl ca -in nginx.csr -out nginx.crt -days 3655server {listen       443 ssl;server_name  wwww.hongyang.com;ssl_certificate      /app/nginx/ssl/nginx.crt;ssl_certificate_key  /app/nginx/ssl/nginx.key;ssl_session_cache    shared:SSL:1m;  #会话中缓存放在什么位置,使用多大内存ssl_session_timeout  5m;                #超时时间ssl_ciphers  HIGH:!aNULL:!MD5; #使用那种加密方式ssl_prefer_server_ciphers  on;指定使用 SSLv3 和 TLS 协议时,服务器密码应优先于客户端密码。location / {root "/vhosts/web1";}}}



Chrom浏览器导入nginx.crt证书后访问

12、stub_status 状态页

        location /status  {stub_status on;allow 192.168.0.0/16deny all;}}#仅能用于location 中Active connections: 2   # 当前所有处于打开状态的连接数
server accepts handled requests65 65 64 
#1、已经连接的连接数
#2、已经处理过的连接数
#3、已经处理过的请求数;在“保持连接”模式下,请求数量可能会多于连接数量Reading: 0 Writing: 1 Waiting: 1
# Reading 正处于接收请求状态的连接数
# Writing 请求已经接收完成,正处于处理请求活发送响应的过程中的连接数
# Waiting 保持连接模式下,且处于活动状态的连接数


13、rewrite regex replacement flag URL重写标志

# rewirte ^/images/(.*\.jgp)$ /imgs/$1 break;
# 相当于访问:http://www.hongyang.com/imges/a/b/c/1.jpg --> http://www.hongyang.com/imgs/a/b/c/1.jpg# flag
# last:一旦此rewrite规则重写完成后,就不再被后面其他的rewrite规则进行处理,而是由User_Agent重新对重写后的URL再一次发起请求,并从头开始执行类似的过程
# break:一旦此rewrite规则重写完成后,由User_Agent对新的URL重新发起请求,且不在会被当前locationg内的任何rewrite规则所检查
# redirect:以302响应码(临时重定向)返回新的URL
# permanent: 以301响应码(永久重定向)返回新的URLlocation /  {root "/vhosts/web1";rewrite ^/bbs/(.*)$ /forum/$1 break;rewrite ^/bbs/(.*)$ https://www.hongyang.com/index.html redirect;}

14、if 上下文

# 语法 if (condition) {}
# 应用环境:server , location# condition
# 1、变量名:变量值为空串,或者以“0” 开始,则为false; 其他的均为true
# 2、以变量为操作数构成的比较表达式可使用=(等于)、!=(不等于)类似的比较操作符进行测试
# 3、正则表达式的模式匹配检查~:区分大小写的模式匹配检查~*:不区分大小写的模式匹配检查!~和!~*:对上面两种的取反
# 4、测试路径为文件可能性:-f和!-f
# 5、测试指定路径为目录的可能性:-d, !-d
# 6、测试文件的存在性:-e, !-e
# 7、检查文件是否有执行权限:x, !-xif ($http_user_agent ~* MSIE) {rewrite ^(.*)$ /mise/$1 break;    
}

15、防盗链

# refere 模块提供invalid_referer(不合法的)变量,valid_referer(合法的)
location ~* \.(jpg|gif|jpeg|png)$ {valid_referer none blocked www.hongyang.comif ($invalid_referer) {rewirte ^/ http://www.hongyang.com/403.html}}

16、定制访问日志格式

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;# 此处可用变量为nginx各模块内建变量

五、网络相关的配置

1、eepalive_timeout time;     #保持连接的超时时长,默认为75s;
2、keepalive_requests;     #在一次保持连接上允许承载最大资源请求数;
3、keepalive_disable [msie6|safari|none];   #为指定类型的浏览器禁用长连接;
4、tcp_nodelay on|off;    #对长连接是否使用TCP_NODELAY选项;(TCP开销比较大,所以TCP在拥塞算法上对开销较小的请求合并成一次请求,延迟响应)
5、client_header_timeout time;    #读取http请求报文首部的超时时长;
6、client_body_timeout time;    #读取http请求报文body部分的超时时长;
7、send_timeout time;    #发送响应报文的超时时长;

相关文章:

Nginx:配置文件详解

一、Nginx配置文件 main配置段&#xff1a;全局配置 events段&#xff1a;定义event工作模式 http {}&#xff1a;定义http协议配置 支持使用变量&#xff1a; 内置变量&#xff1a;模块会提供内建变脸定义 自定义变量&#xff1a;set var_name value 二、 主…...

卷积,是什么?

其实就是对事物的作用&#xff0c;或者说作用力&#xff0c;比如说&#xff0c;石板上没有字&#xff0c;我们刻上字&#xff0c;便于识别&#xff0c;从机器视觉角度来说&#xff0c;就是对图像的作用力&#xff0c;这种作用使得能看清想要的东西&#xff0c;感觉还是很主观&a…...

Javascript的闭包有哪些应用?

JavaScript 中的闭包是一种强大的特性&#xff0c;它可以用于多种应用。以下是一些闭包在 JavaScript 中的常见应用&#xff1a; 1、封装私有变量&#xff1a; 通过闭包&#xff0c;可以创建私有变量和方法。外部作用域无法直接访问闭包内的变量&#xff0c;从而实现了信息隐藏…...

LCM-LoRA模型推理简明教程

潜在一致性模型 (LCM) 通常可以通过 2-4 个步骤生成高质量图像&#xff0c;从而可以在几乎实时的设置中使用扩散模型。 来自官方网站&#xff1a; LCM 只需 4,000 个训练步骤&#xff08;约 32 个 A100 GPU 小时&#xff09;即可从任何预训练的稳定扩散 (SD) 中提取出来&#…...

设计模式-开篇

什么是设计模式 设计模式是一种被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、提高代码的可靠性。设计模式不是可直接转化为代码的完成解决方案&#xff0c;而是描述了如何解决一个问题的经过&#xf…...

HashMap的实现原;HashMap的工作原理;HashMap存储结构; HashMap 构造函数

文章目录 说一下HashMap的实现原理(非常重要)①HashMap的工作原理HashMap存储结构常用的变量HashMap 构造函数tableSizeFor() put()方法详解hash()计算原理resize() 扩容机制get()方法为什么HashMap链表会形成死循环 HashMap是我们在工作中使用到存储数据特别频繁的数据结构&am…...

JavaScript 原型,原型链的特点

JavaScript 的原型&#xff08;Prototype&#xff09;和原型链&#xff08;Prototype chain&#xff09;是 JavaScript 面向对象编程中的重要概念。 原型&#xff08;Prototype&#xff09; 在 JavaScript 中&#xff0c;每个对象都有一个原型对象&#xff0c;而这个原型对象…...

越南服务器租用:企业在越南办工厂的趋势与当地(ERP/OA等)系统部署的重要性

近年来&#xff0c;越南逐渐成为全球企业布局的热门目的地之一。许多企业纷纷选择在越南设立工厂&#xff0c;以利用其低廉的劳动力成本和优越的地理位置。随着企业在越南的扩张&#xff0c;对于当地部署ERP系统或OA系统等的需求也日益增长。在这种情况下&#xff0c;租用越南服…...

Qt QString与QChar总结

(一) QString 1 QString的简介 QString 是Qt 中的一个类&#xff0c;用于存储字符串&#xff0c;QString 没有父类。QString 存储的是一串字符&#xff0c;每个字符是一个 QChar 类型的数据。QChar 使用的是 UTF-16 编码&#xff0c;一个字符包含 2字节数据。 对于超过 6553…...

Leetcode算法系列| 1. 两数之和(四种解法)

目录 1.题目2.题解解法一&#xff1a;暴力枚举解法二&#xff1a;哈希表解法解法三&#xff1a;双指针(有序状态)解法四&#xff1a;二分查找(有序状态) 1.题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数…...

汇编-pop出栈指令

32位汇编 执行动作分为两步&#xff1a; 第一步&#xff1a;读出数据 第二步&#xff1a;改变栈地址 如果操作数是16位&#xff0c; 则ESP加2&#xff1b; 如果操作数是32位&#xff0c; 则ESP加4 espesp2 或 espesp4 格式&#xff1a;...

【代码】基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型(完美复现)matlab代码

程序名称&#xff1a;基于VMD&#xff08;变分模态分解&#xff09;-SSA&#xff08;麻雀搜索算法优化&#xff09;-LSTM的光伏功率预测模型 实现平台&#xff1a;matlab 代码简介&#xff1a;提出了变分模态分解(VMD)和麻雀搜索算法(SSA)与长短期记忆神经网络 (LSTM)相耦合,…...

【UnLua】在 Lua 中定义 UE 反射类型

【UnLua】在 Lua 中定义 UE 反射类型 用法 启动编辑器时遍历 Defines 目录下 lua 脚本来加载 UE 反射类型&#xff08;开个临时的 Lua VM 即可&#xff09;直接像 -- define a uenum in lua UEnum.EEnumGuestSomethingElse {Value1 1;Value2 2; }-- use it like a native …...

react的开发中关于图片的知识

React是一个流行的JavaScript库&#xff0c;用于构建用户界面。在React开发中&#xff0c;图片是一个非常重要的元素&#xff0c;可以用于美化界面和展示内容。本篇博客将详细讲解React中关于图片的知识。 1. React中使用图片 在React中使用图片非常简单&#xff0c;只需要使…...

AcWing 188:武士风度的牛 ← BFS

【题目来源】https://www.acwing.com/problem/content/190/ 【题目描述】 农民 John 有很多牛&#xff0c;他想交易其中一头被 Don 称为 The Knight 的牛。 这头牛有一个独一无二的超能力&#xff0c;在农场里像 Knight 一样地跳&#xff08;就是我们熟悉的象棋中马的走法&…...

马养殖场建设VR模拟实训教学平台具有灵活性和复用性

为保障养殖场生物安全&#xff0c;避免疫病传播&#xff0c;学生出入养殖场受时间和地域的限制&#xff0c; 生产实习多以参观为主&#xff0c;通过畜牧企业技术人员的讲解&#xff0c;学生被动了解生产过程。为了解决畜牧养殖实训难的问题&#xff0c;借助VR技术开展畜牧养殖虚…...

云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)

云技术如何一步步演进的&#xff1f; 云原生解决了什么问题&#xff1f; 物理设备 电脑刚被发明的时候&#xff0c;还没有网络&#xff0c;每个电脑&#xff08;PC&#xff09;&#xff0c;就是一个单机。 这台单机&#xff0c;包括CPU、内存、硬盘、显卡等硬件。用户在单机…...

基于OGG实现Oracle实时同步MySQL

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…...

〖大前端 - 基础入门三大核心之JS篇㊷〗- DOM事件对象及它的属性

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…...

如何搭建zerotier服务器组网实现内网穿透

小白花了四天的下班时间终于把zerotier网络调通&#xff0c;此刻坐在桌前舒畅地喝口茶&#xff5e;&#xff5e; 下面来详细记录下这几天踩的坑&#xff1a; 起因就在于一直在iPad上用向日葵连接公司电脑的我觉得向日葵的界面用的实在难受&#xff0c;vs code操作十分不灵光&…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...