Linux之Nginx配置篇

article/2025/7/28 6:17:31

一、Ngixn核心重点

  • Nginx是一款功能强大HTTP和反向代理服务器,目前大部分公司用于使用其Web服务器

  • 在Nginx还未出世之前都是在使用比较传统Apache服务器,两则都能处理Web请求,但是后者处理效率更高、包括其负载均衡,反向代理功能都很强,硬件资源占有率很少,并呢个更好的和后端服务进行对接
  • 模块化组件多种多样,它有很多模块组成---HTTP模块、EVENT模块,PROXY,Fstcgi,upstream等多个模块构成,并且模块又由多个功能组成:Handlers,Filters,Proxies
  • 工作原理主程要依据master进分配任务给worker进程,然后我们client端访问就是被分配的各个worker进程,在企业高并发情况下,Nginx采用的是epoll模型,属于异步非阻塞,依据事件响应完成,传统Apache依据select遍历所有句柄完成
  • Ngixn资源定位的关键依赖于Location,一般都是由location分发不同的模块来完成相应的工作
  • worker内部分配流程,Nginx默认监听端口80由Master管理,然后我会有多个woker工人来抢分发下来的task,当抢到这个事件时我会将这件事务进行锁定,而其他工人无法接这个任务,最后完成请求转发,数据读取等操作

二、Nginx实战剖析

服务管理篇

2.1.1Nginx安装配置

具体详细安装步骤可以参考一下我的博客哦:Linux之Nginx安装及配置原理篇(一)-CSDN博客

这里主要阐述一下安装时注意要点:

# 在配置方面具体要注意以下几个方面# 1.首先需要主要的是Nginx需要用awk进行替换避免遇到一些不同机型版本兼容问题(这里以Nginx1.26.1版本为例)sed -i -e 's/1.26.1//g' -e 's/nginx\//JWS/g' -e 's/"NGINX"/"JWS"/g' src/core/nginx.h# 2.预编译阶段注意模块组件(gzip,ssl)
useradd -r -s /sbin/nologin www && ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module

2.1.2Nginx版本升级管理

以下介绍了一些详细的升级运维相关命令:

# 查看nginx运行状况
ps -ef | grep nginx#重启Nginx服务
nginx -s reload   or kill -HUP 'path://nginx.pid'#检查配置
path://nginx -t#停止服务
nginx -s stop  or pkill nginx#查看版本信息
nginx -V#替换就旧版本的Nginx备份旧版本的nginx可执行文件,复制新版本的nginx这行文件
mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.old 
cp objs/nginx /usr/local/nginx/sbin/

服务优化篇

2.2.1   配置文件常见优化

  • (一)配置文件

配置文件存放路径:/usr/local/nginx/conf/nginx.conf

首先介绍几个常见的服务配置

a.下面是针对events文件的详解,主要牵涉到了两个文件分别最大连接数和worker多任务调度的启动

events{worker_connections  1024;    #worker进程处理最大连接数multi-accept on;   允许worker进程一次处理多个连接}

b.http虚拟服务器配置

参数sendfilekeepalive_timeoutgzipinclude
解释启用高效文件传输保持连续超时时间启用压缩包含其他配置文件

在此模块内部,通常会定义一个server模块,里面会让你添加服务的相关配置,例如:server_name,listen,root记录网站跟目录,index记录了其索引文件

这里listen监听端口即就是与http虚拟服务器进行socke连接

server_name用于指定主机名

server {listen    80;server_name    localhost;
}

在server虚拟主机中还会牵涉到一个重要概念------location配置

关于location的URL匹配规则主要涉及到了三种方式    (精确匹配=、前缀匹配^~,正则匹配~或~*)

这里root即指定了文件系统路径,index代表着网页查找索引,try_file 表示顺序查找文件,expires设置了缓存时间


location / {root html;index  index.htm index.html;try_fiiles on;expires: 3d;}

以下对于配置针对于后缀文件为mine.type文件实现了自动跳转至静态文件操作

修改完配置文件后要及时让nginx服务重置

#关闭防火墙
systemctl disable firewalld.service
systemctl restart firewalld# 重置Nginx服务
nginx -s reload# 查询worker进程分布情况
ps -eo,psr,pid,args | grep nginx #监控cpu利用率
top -p $(pgrep -d','nginx)将域名加入windows中hosts目录中

值得注意的是pid:代表nginx主进程id,include包含其他配置文件

  • (二)服务优化

tips:当配置多个server时,端口号是否不同主要取决于其监听方式

虚拟主机配置

 >>>>方法一:基于域名实现

        server {listen 88;server_name www.abc.com;location / {root html/tt1;index index.html index.htm;}error_page   500 502 503 504  /50x.html;location /50x.html {root html;}}server{listen 88;server_name www.666.com;location / {root html/666/;index index.html index.htm;}error_page   500 502 503 504  /50x.html;location /50x.html {root html;}
}

访问效果如下:

>>>方法二    含有多个IP时

     server {listen 192.168.1.100:88;listen 192.168.1.200:88;}

不同域名和不同ip必须使用不同端口

server {listen 80;
}server {listen 8080;
}

【注意】在(同一IP/域名条件下)广泛运用Web服务和后台管理平台上

默认配置与location

当server监听到相同的端口,但没有找到与匹配虚拟服务是默认跳转到加入了default-server配置项的虚拟主机

server {listen 80 default-server
}

Location作为Nginx资源规则制定者,用于匹配符合要求URI

其语法格式为: location [修饰符] 匹配模式{}

几种常见的分类模式如下:

资源规则前缀匹配精确匹配正则匹配(区分大小写)正则匹配(不区分大小写)有限前缀匹配
语法结构

location = /prefix/ {

       #匹配以prefix/开头的URI

}

location /exact {

        #只匹配/exact这个uri

}

location ~ \.php${

        匹配以.php结尾的文件

}

location ~* \.(jpg|jpeg|png|gif)${

#匹配图片扩展名文件,不区分大小写

}

location ^~/images/{

#以/images/开头的uri

}

【案例】将我桌面上的图片匹配显示至浏览器窗口,需要加入以下配置

 location ~* \.(jpg|jpeg|png|gif)$ {root html/;expires 3d;access_log off;}

效果如下:

其优先级如下:

        精准匹配>有限前缀匹配>正则匹配>前缀匹配

2.2.2  负载均衡

负载均衡就是将网络流量交给多台服务器来处理,从而优化资源使用,提高吞吐量,减少访问时间,解决了单一资源负载问题

用生活上的例子可以根据服务员接待客户的例子来说,在工作量上来看负载均衡工作效率很高,让任务分配的更加均衡了

配置修改部分

通过测试发现效果有效三个网页均能在不同端口中打开

### 负载均衡部分upstream myapp{server 127.0.0.1:8001 weight=2;server 127.0.0.1:8002;server 127.0.0.1:8003;}server{listen 88;server_name www.abc.com;location / {root html/tt1/;index index.html index.htm;proxy_pass http://myapp;proxy_set_header Host $host;}location ~* \.(jpg|jpeg|png|gif)$ {root html/;expires 3d;access_log off;}}

负载均衡效果如图所示:

注意:关于Nginx服务中查看命令有以下几个部分需要值得注意

1.端口查询命令:netstat -tulnp | grep -E '8001|8002|8003'

2.查看端口使用情况:lsof -i:[port]

3.强制关掉进程:kill -9 [pid]

2.2.3 动静态资源跳转

  • 动态APi将请求代理到外部服务(实际IP地址就是10.2.53.5:8001)
  • 设置try_files配置,如果没有代理服务器转发,将返回404
  • $remote_addr:将客户端真实IP传递给后端

具体配置代码详细如下:

### 静态资源处理location = / {root /usr/local/nginx/html;try_files $uri /index.html =404
}### 动态代理处理服务
location /api/ {proxy_pass http://10.2.53.5:8001/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;
}location / {proxy_pass http://myapp;proxy_set_header Host $host;proxy_set_header X-REAL-IP $remote_addr;    ##后端应用能够获得客户端真实IP
}


http://www.hkcw.cn/article/SxESKwhyKJ.shtml

相关文章

RAG混合检索:倒数秩融合RRF算法

文章目录 检索增强生成 (RAG)倒数秩融合在 RAG 中的工作原理RRF 背后的数学直觉检索增强生成 (RAG) RAG 是自然语言处理中的一种强大技术,结合了基于检索的模型和生成模型的优势。 如果检索器未能从检索器中获取相关文档,则精度较低,幻觉的可能性会增加。 有些查询适合…

2023年09月GESPC++二级真题解析(含视频)

视频讲解:GESP2023年9月二级C真题讲解 一、单选题 第1题 解析: 答案D,第一台用的就是电子管 第2题 解析: 答案B,x>y不符合条件,执行ay,bx,输出a、b,即输出y、x,也…

STUSB4500 PPS(PD3.0)快充SINK模块——应用 解析

0 前言 朋友参加车展,收获一枚很漂亮的倍思65W氮化镓快充头,送给我了。 我看了手中只支持33W快充的三星陷入了沉思… 快充头支持PPS协议,我心思这玩意适合做可调电源啊! 上网随便一查没查到,都是转换成5V、9V、12V等…

4644芯片在商业航天与特种工业中的低温环境适应性研究

摘要 在现代电子技术的广泛应用中,商业航天和特种工业领域对于电子元件的环境适应性提出了极为苛刻的要求。本文以国科安芯研发的 ASP4644S 芯片为例,深入探讨其在-55℃极端低温条件下的运行性能、技术难点以及在商业航天与特种工业领域的应用。通过对芯…

Windows 权限提升 | TryHackMe | Windows Privilege Escalation

Windows 权限提升 [!quote] 权限提升就是利用用户A的主机访问权限,利用目标系统中的漏洞来获取到用户B的访问权限 Windows 服务或计划任务的配置错误账户被赋予过多权限缺少Windows安全补丁 Windows 用户 Windows系统主要存在两种类型的用户,根据访问级别,分为两类 Administ…

Redis持久化机制

一. Redis应用概述 Redis是一种高性能的KV键值对存储数据库,通常用作数据库、缓存和消息队列等。它支持多种数据结构,如字符串、哈希表、列表、集合和有序集合。Redis具有快速存取和实时响应的特点,广泛应用于Web开发、大数据处理和实时分析…

VMware使用时出现的问题,此文章会不断更新分享使用过程中会出现的问题

VMware使用时出现的问题,此文章会不断更新分享使用过程中会出现的问题 一、VMware安装后没有虚拟网卡,VMnet1,VMnet8显示黄色三角警告 此文章会不断更新,分享VMware使用过程中出现的问题 如果没找到你的问题可以私信我 一、VMware…

60天python训练计划----day40

DAY 40 训练和测试的规范写法 知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 一.单通道图…

leetcode:479. 最大回文数乘积(python3解法,数学相关算法题)

难度:简单 给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。 示例 1: 输入:n 2 输出:987 解释:99 x 91 9009, 9009 % 1337 …

vue2 + webpack 老项目升级 node v22 + vite + vue2 实战全记录

前言 随着这些年前端技术的飞速发展,几年前的一些老项目在最新的环境下很可能会出现烂掉的情况。如果项目不需要升级,只需要把编译后的文件放在那里跑而不用管的话还好。但是,某一天产品跑过来给你讲要升级某一个功能,你不得不去…

Golang | 运用分布式搜索引擎实现视频搜索业务

把前面所设计好的搜索引擎引用进来开发一个简单的具体的视频搜索业务。代码结构: handler目录:后端接口,负责接收请求并返回结果,不存在具体的搜索逻辑。video_search目录:具体的搜索逻辑存放在这,包括reca…

硬件学习笔记--64 MCU的ARM核架构发展及特点

MCU(微控制器)的ARM核架构是当前嵌入式系统的主流选择,其基于ARM Cortex-M系列处理器内核,具有高性能、低功耗、丰富外设支持等特点。以下是ARM核MCU的主要架构及其发展: 1. ARM Cortex-M系列内核概览 ARM Cortex-M系…

【笔记】Windows 系统安装 Scoop 包管理工具

#工作记录 一、问题背景 在进行开源项目 Suna 部署过程中,执行设置向导时遭遇报错:❌ Supabase CLI is not installed. 根据资料检索,需通过 Windows 包管理工具Scoop安装 Supabase CLI。 初始尝试以管理员身份运行 PowerShell 安装 Scoop…

网络安全-等级保护(等保) 3-2-2 GB/T 28449-2019 第7章 现场测评活动/第8章 报告编制活动

################################################################################ GB/T 28449-2019《信息安全技术 网络安全等级保护测评过程指南》是规定了等级测评过程,是纵向的流程,包括:四个基本测评活动:测评准备活动、方案编制活…

软件测评中心如何确保软件品质?需求分析与测试计划很关键

软件测评中心承担着对软件进行评估、测试和审查的任务,它有一套规范的流程来确保软件的品质,并且能够向客户和开发者提供详实的软件状况分析报告。 需求分析环节 这一环节至关重要,必须与客户和开发团队保持密切交流。我们需要从他们那里精…

【C语言编译与链接】--翻译环境和运行环境,预处理,编译,汇编,链接

目录 一.翻译环境和运行环境 二.翻译环境 2.1--预处理(预编译) 2.2--编译 2.2.1--词法分析 2.2.2--语法分析 2.2.3--语义分析 2.3--汇编 2.4--链接 三.运行环境 🔥个人主页:草莓熊Lotso的个人主页 🎬作者简介:C研发…

matlab实现VMD去噪、SVD去噪,源代码详解

为了更好的利用MATLAB自带的vmd、svd函数,本期作者将详细讲解一下MATLAB自带的这两个分解函数如何使用,以及如何画漂亮的模态分解图。 VMD函数用法详解 首先给出官方vmd函数的调用格式。 [imf,residual,info] vmd(x) 函数的输入: 这里的x是待…

深入理解复数加法与乘法:MATLAB演示

在学习复数的过程中,复数加法与乘法是两个非常基础且重要的概念。复数的加法和乘法操作与我们常见的实数运算有所不同,它们不仅涉及到数值的大小,还有方向和相位的变化。在这篇博客中,我们将通过MATLAB演示来帮助大家更好地理解复…

html+css+js趣味小游戏~Treasure Arena多人竞技(附源码)

下面是一个简单的记忆卡片配对游戏的完整代码&#xff0c;使用HTML、CSS和JavaScript实现&#xff1a; html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

Linux之文件进程间通信信号

Linux之文件&进程间通信&信号 文件文件描述符文件操作重定向缓冲区一切皆文件的理解文件系统磁盘物理结构&块文件系统结构 软硬链接 进程间通信匿名管道命名管道system V共享内存 信号 文件 首先&#xff0c;Linux下一切皆文件。对于大量的文件&#xff0c;自然要…