Nginx 笔记

本文详细解读了Nginx的配置文件结构,包括全局块、events块、http块,以及server和location块的作用。介绍了反向代理、负载均衡(如轮询、weight和ip_hash)和动静分离的基本原理和案例。

Nginx 笔记

nginx.conf 配置文件

nginx 安装目录下,默认的配置文件都放在 conf 目录下,而主配置文件 nginx.conf 也在其中。

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}

nginx.conf 配置问价大致分为三部分:

第一部分:全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

比如上面第一行配置的:worker_processes 1;

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

第二部分:events 块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024.

这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

第三部分:http 块

这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是:http 块也可以包括 http 全局块、server 块。

http 全局块

http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server 块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

全局 server 块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

location 块

一个 server 块可以配置多个 location 块。

这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

反向代理

案例配置:

server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8001;
}
location ~ /demo1 {
proxy_pass http://localhost:8001;
}
location ~ /demo2 {
proxy_pass http://localhost:8002;
}
}

location 指令说明

该指令用于匹配 URL,语法如下:

location [= | ~ | ~*| ^~] url{
}

= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配

成功,就停止继续向下搜索并立即处理该请求。

~:用于表示 uri 包含正则表达式,并且区分大小写。

~*:用于表示 uri 包含正则表达式,并且不区分大小写。

^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字

符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location

块中的正则 uri 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

负载均衡

案例配置如下:

http{
upstream myserver{
ip_hash;
server localhost:8080 weight=1;
server localhost:8081 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myserver
proxy_connect_timeout 10;
}
}

在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配方式(策略):

轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

weight

weight 代表权重,默认为 1,权重越高被分配的客户端越多指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

动静分离

动静分离从目前实现角度来讲大致分为两种:

1.一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;

2.另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码 200。

STM32电机库无感代码注释无传感器版本龙贝格观测三电阻双AD采样前馈控制弱磁控制斜坡启动内容概要:本文档为一份名为《STM32电机库无感代码注释无传感器版本龙贝格观测三电阻双AD采样前馈控制弱磁控制斜坡启动》的技术资料,主要围绕基于STM32微控制器的永磁同步电机(PMSM)无传感器矢量控制系统的实现展开。文档详细解析了无感FOC(磁场定向控制)的核心算法,包括采用龙贝格观测器(Luenberger Observer)进行转子位置与速度估算、三电阻采样方式下的电流检测、双AD同步采样机制、前馈解耦控制、弱磁扩速控制策略以及斜坡启动技术。通过对底层C语言代码的逐行注释,帮助开发者理解控制逻辑的实现细节和系统参数的调优方法。; 适合人群:具备嵌入式开发基础、熟悉STM32平台和电机控制理论的电气工程、自动化及相关专业的工程师、研究生及高年级本科生;尤其适合从事电机驱动开发、电赛备赛或无感FOC项目研发的技术人员。; 使用场景及目标:①深入理解无传感器电机控制系统中龙贝格观测器的设计与实现原理;②掌握三电阻采样与双AD同步配置在实际工程中的应用技巧;③学习前馈控制、弱磁控制和斜坡启动等高级控制策略的代码实现方式;④用于电赛、毕业设计或工业项目中电机控制模块的开发与调试参考。; 阅读建议:建议结合STM32开发环境与硬件平台进行实践,边阅读代码注释边调试程序,重点关注观测器参数整定、AD采样时序、PI调节器设计及弱磁控制切换逻辑,以提升对整个无感FOC系统运行机制的理解与掌控能力。
这款轻量文件管理工具,多窗口浏览 + 快速搜索直接戳中痛点! 最近挖到一款超实用的轻量文件管理器,界面清爽、功能精准戳中日常文件管理的痛点 —— 尤其适合需要同时对比多个目录、快速检索文件的场景,今天分享给大家~ 一、界面:简洁但够用,多窗口布局是核心亮点 打开软件的第一感觉是 “清爽不冗余”:顶部是基础功能栏,下方是可自由配置的多窗口文件浏览区,支持自定义 “列数”(比如 2 列、4 列),还能单独调整每个窗口的高度。 比如我需要同时查看C:\Users\S目录下的内容,直接通过 “添加文件浏览器” 就能快速生成多个窗口,文件列表清晰展示名称、修改日期、类型、大小,对比不同目录的文件简直太方便了! (甚至支持给每个窗口单独刷新 / 关闭,操作灵活度拉满~) 二、核心功能:精准解决 “多目录 + 快搜索” 需求 这款工具没有花里胡哨的功能,但刚需功能做得很到位: 多窗口并行浏览:无论是同时对比多个文件夹的内容,还是临时拆分目录查看,都能通过 “添加 / 删除浏览器” 一键实现,窗口布局也支持自定义列数(截图里能看到 2 列、4 列的布局效果)。 快速文件搜索:顶部的搜索框可以直接输入文件名 / 文件夹名检索,搭配 “搜索结果窗口”(带透明度调节),不用切换页面就能快速定位目标文件。 轻量化操作:支持 “刷新所有窗口”“删除最后一个窗口” 等快捷操作,没有多余的广告或后台进程,打开即用、占用资源极低。 三、谁适合用它? 经常需要同时查看 / 对比多个目录文件的办公族; 习惯轻量工具、反感臃肿软件的极简党; 需要快速检索文件,不想打开系统自带资源管理器的效率控。 这款工具属于 “小而美” 的类型 —— 没有复杂功能,但把 “多窗口文件管理” 这个核心需求做到了极致,如果你也常被 “来回切换文件夹” 折腾,不妨试试它~
根据原作 https://pan.quark.cn/s/13b48a67a678 的源码改编 背景介绍 本人在互联网工作多年,混迹过bat中两家,都是屌丝网工,即便两家自动化程度都已经非常高了,但网工在日常工作种任然少不了大量配置交换机。 所以这里写一个python脚本,把可以自动化登录设备刷配置,然后显示检测命令结果和ping检测结果,从而减少人成本。 地址: 这里也提供一个百度网盘的下载地址 链接: 密码: ignz 设计思路 比较简单,就是实现读取操作单(configuration.txt)中的内容,获取需要配置的设备管理IP和命令以及检测步骤,然后通过配置文件(config.py)里面的参数来获取设备登录帐号密码和登录方式等信息进行自动化登录设备刷配置。 由于这个脚本会对每一步进行检测并提示操作者是否继续,所以变更单里面的操作顺序可能比较重要,所以没有使用多进程来做,串行逐个执行变更单的设备和配置。 但是考虑到我们日常可能会用到需要刷大量设备配置,所以在文件夹(autoconfig_beta)中添加了无脑多进程批量刷配置的脚本,这个在最后再介绍。 这个脚本用python写的,而且不需要额外按照任何库,对于linux基础比较弱和没有python基础的网工来说可以是分分钟就能上手。 就是界面有点丑。 。 。 操作简介 如上面介绍,config.py文件主要是配置登录设备的相关参数 操作单是文件 configuration.txt 以下是一个demo 可以看到每个设备需要包含$IP:、$CONFIG:、$CHECK:、$PING:等参数 $IP:下只能填写一个设备的管理ip $CONFIG:下可以写条需要执行的命令 $CHECK:下写多条进行展示的命令,为了防止一些设备s...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值