Linux之Nginx安装及配置原理篇(一)
Nginx安装及配置
前情回顾
-
首先针对Nginx进程模型,我们回顾一下它的原理机制,我们知道它是通过Master通过fork分发任务节点给予
work节点
,然后work节点触发了event
事件,之后通过一个access_muttex互斥锁
,来单线程
调用我们的资源,之后就完成了服务间资源的调度和分配了 -
在Nginx模型中有很多服务模块供我们使用,比如
核心模块
HTTP模块、EVENT模块、MAIL模块,还有一些常用模块及其一些第三方模块HTTP fastcgi、HTTP Proxy等模块 -
关于这些模块我们可以按功能可以分为三大类
handler处理模块、Filters模块以及Proxy代理模块
,Handler用于处理请求,Filters对请求进行过滤,Proxy用做代理服务器,使用应用场景可以参考下图:
Nginx安装流程
首先检查外网环境是否能正常使用和检查yum是否能正常使用
- 检测网络能否正常连接
若网络无法正常使用:建议检查DNS服务、网卡信息以及yum国内源是否已经配置,防火墙是否正常关闭,然后重启网卡
- 安装Nginx依赖环境
# PCRE库安装
yum -y install pcre-devel.x86_64 # 切换安装路径
cd /usr/src# 这里以Nginx1.26.1版本为例,首先进行源码的安装
wget -c http://nginx.org/download/nginx-1.26.1.tar.gz # 解压tar.gz包
tar -xzf nginx-1.26.1.tar.gz# 进入Nginx解压目录,修改Nginx版本信息为JWS(预防机型兼容问题)
cd nginx-1.26.1
sed -i -e 's/1.26.1//g' -e 's/nginx\//JWS/g' -e 's/"NGINX"/"JWS"/g' src/core/nginx.h# 预编译
useradd www # 创建用户
userdel -r www 2>/dev/null || true; # 若存在重复用户,予以删除# 编译依赖环境说明:这一部分表示创建用户(useradd -r -s /sbin/nologin www),http_stub_status_module(用于检查Nginx是否为运行状态)、 http_ssl_module(启用http和ssl支持),http_realip_module(如果有cdn或负载均衡,此模块能记录真实的ip),http_gzip_static_module(使用gzip对模块进行压缩)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# 编译并安装
make&&make install#检查是否安装成功,看到ok就安装成功啦!
/usr/local/nginx/sbin/nginx -t#启动Nginx并检查后台进程运行状态
/usr/local/nginx/sbin/nginx #启动命令
ps -ef | grep nginx #检查后台进程是否运行(需要看到master,worker)############ 至此Nginx就安装成功了 ############
我们看到运行能成功运行后的进程使用情况如下:
并且此时我们就可以通过访问我们本机网卡本机ip就可以访问了我们的Ngixn服务了
Nginx服务无法正常使用如何排查解决方案
- 首先检查服务状态是否正常
/usr/local/nginx/sbin/nginx -s reload #修改Nginx配置需要使用该配置文件加载Nginx配置
/usr/local/nginx/sbin/nginx -s stop #暂停Nginx服务
/usr/local/nginx/sbin/nginx #启动Nginx服务
关闭了Nginx服务
- 如果Nginx服务在关闭时出现报错,有进程和端口占用的情况
ps -ef | grep nginx #排查Nginx进程占用情况
- 使用kill命令杀进程
## 第一种方式 直接通过服务名删除
pkill -9 nginx
## 第二种方式(我是根据我的图片哈,大家只需要看自己占用的进程号即可) 通过ps命令查看后,选择占用的进程号进行杀死
kill -9 5182 && kill -9 5183
- 然后通过该命令继续排查,若没有输出内容,则表示无Nginx服务在运行
netstat -tnlp | grep nginx ## 检查服务
netstat -tnlp | grep -E "80|443" ##检查服务是否有端口占用
检查端口是否还在正在运行
【处于运行状态】
【处于非运行状态】
- 上述问题排查后发现还有问题,可以检查一次防火墙状态,观察是否开放端口或者保持关闭防火墙
# 防火墙状态
systemctl status firewalld.service
# 防火墙打开
systemctl start firewalld.service
# 防火墙关闭
systemctl stop firewalld.service
# 防火墙重启
systemctl restart firewalld.service
防火墙打开,我们就需要开放80端口
# 开放端口使用命令
firewall-cmd --zone=public --add-port=80/tcp --permanent
开放80端口
,之后重启防火墙,让配置生效
防火墙关闭
Nginx配置文件详解
我们安装完Nginx服务器之后,就让我们一起来聊聊Nginx服务器以便于我们后期更好的运维和管理Nginx服务器
首先Nginx服务器是存放在/usr/local/nginx/conf/nginx.conf
路径下,下面我们就来分析一下nginx.conf这个配置文件相关信息吧!!!
- 首先来查询一下Ngixn中worker进程使用情况(
监测worker状态
)
ps -eo psr,pid,args | grep nginx
-
监测Nginx占用cpu利用率
top -p $(pgrep -d ',' nginx)
下面我们进入这个文件来分析一下这个文件
user nobody
这里代表Ngiinx指定运行的用户和用户组worker_processes
则负责cpu内核进程数的调整events
则代表事件处理模块error_log代表错误日志存放位置
,后面的notice、info
错误日志优先级(notice>info)pid
代表Nginx主进程id路径地events
代表事件处理模块忙着里面用worker_connectin
设置了worker线程的最大连接数,当然我们也还可以在这里面设置其他属性设置worker进程,比如说multi-accept on
加上这个属性可以让worker进程一次接收多个连接
HTTP模块之虚拟服务器配置
- Http属性配置部分
在Http模块中,include
里面包含中其他配置文件,senfile
用于高效文件传输,keepalive_timeout
代表保持连接超时的时间,gzip
用于压缩.
- Server定义的虚拟机部分
- 在Server模块中的配置通常会设置
listen监听端口
、定义server_name
,以及根据设置location
的值设置网页所在的根目录
,以及在该目录下要查找的页面索引
- 在设置
location
属性时,如果我们单个的将页面都填入index
索引,显然会显得十分繁琐,为此我们引入了URL匹配规则和处理方式精准匹配(=)、前缀匹配(^~)、正则匹配(~或~*)
- 在
location
中可以设置属性设置root文件系统路径,try_file
来设置顺序查找文件,通过expires
来设置缓存
Nginx虚拟主机实战
5.1虚拟主机
好比虚拟服务克隆技术,针对同一个WEB服务端部署多个网页,这也是我们俗称的一台服务多个站点
5.2 实现步骤:创建两个WEB网页目录,并且分别部署到不同的index.html页面,然后我在我的nginx服务器上部署两个不同的Web站点,端口位于同一端口
虚拟服务server组成(listen、server_name、location
)
# 1. 打开nginx.conf文件
vim /usr/local/nginx/conf/nginx.conf# 2.在HTTP模块中增加server模块(增加2个虚拟服务)
server{listen 80;server_name www.111.com;access_log logs/exp.access.log; #日志文件location /{ root html/tt1; #web系统目录index index.html index.htm; #索引}
}server{listen 80;server_name www.666.com;access_log logs/exp2.access.log; #日志文件location /{root html/tt2; #web系统目录index index.html index.htm; #索引}
}# 3.dns域名服务加载,修改hosts文件目录c://windows/system32/divers/hosts,这里将www.111.com和www.666.com放在本地hosts路径实现ip路径映射(host 文件加入内容---->主机IP 映射域名 例如:10.2.53.5 www.666.com)# 5.切换目录,创建网页
cd /usr/local/nginx/html/
mkdir {tt1,tt2}
# 将index.html拷贝一份用户查看虚拟主机创建效果
cp index.html tt1/
cp index.html tt2/
#可以尝试改变index.html内容后面访问域名可以加以区分# 4.重启nginx-reload服务
/usr/local/nginx/sbin/nginx -s reload
``
注意不要用谷歌浏览器
进行访问可以用IE、Firefox等浏览器都可访问
相关文章:

Linux之Nginx安装及配置原理篇(一)
Nginx安装及配置 前情回顾 首先针对Nginx进程模型,我们回顾一下它的原理机制,我们知道它是通过Master通过fork分发任务节点给予work节点,然后work节点触发了event事件,之后通过一个access_muttex互斥锁,来单线程调用我…...

【Linux网络】NAT和代理服务
NAT 之前我们讨论了,IPv4协议中,IP地址数量不充足的问题。 原始报文途径路由器WAN口时,对报文中的源IP进行替换的过程,叫做NAT。 NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能: NAT能…...

中药药效成分群的合成生物学研究进展-文献精读130
Advances in synthetic biology for producing potent pharmaceutical ingredients of traditional Chinese medicine 中药药效成分群的合成生物学研究进展 摘要 中药是中华民族的文化瑰宝,也是我国在新药创制领域的重要驱动力。许多中药材来源于稀缺物种…...

【消息队列】RabbitMQ基本认识
目录 一、基本概念 1. 生产者(Producer) 2. 消费者(Consumer) 3. 队列(Queue) 4. 交换器(Exchange) 5. 绑定(Binding) 6. 路由键(Routing …...
OCCT知识笔记之OCAF框架详解
OCAF框架在OCCT项目中的构建与使用指南 Open CASCADE Application Framework (OCAF)是Open CASCADE Technology (OCCT)中用于管理CAD数据的核心框架,它提供了一种结构化方式来组织和管理复杂的CAD数据,如装配体、形状、属性(颜色、材料)和元数据等。本文…...
蓝桥杯 16. 外卖店优先级
外卖店优先级 原题目链接 题目描述 “饱了么” 外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有一个优先级,初始时(0 时刻)优先级都为 0。 每经过 1 个时间单位: 如果外卖店没有订单,则优先…...

1T 服务器租用价格解析
服务器作为数据存储与处理的核心设备,对于企业和个人开发者而言至关重要。当涉及到租用 1T 服务器时,价格是大家很为关注的要点。然而,1T 服务器租用一个月的费用并非固定不变,而是受到诸多因素的综合影响。 影响 1T 服务器租用…...

【JavaWeb】Maven(下)
1 依赖管理 1.1 依赖配置 1.1.1 基本配置 依赖:指当前项目运行所需要的jar包。 一个项目中可以引入多个依赖: 例如:在当前工程中,我们需要用到logback来记录日志,此时就可以在maven工程的pom.xml文件中,引…...
java.lang.ArithmeticException
ArithmeticException算术异常类在java.lang包下,继承RuntimeException运行期异常,算术异常类在Java1.0就有,当发生异常算术条件时抛出算术异常类,譬如除数为0的情况,除数除不尽的情况。 一 异常出现场景 1.1 除数为零…...

openEuler24.03 LTS下安装MySQL8.0.42
目录 前提步骤 删除原有mysql及maridb数据库 安装MySQL 启动MySQL 启动查看MySQL状态 设置MySQL开机自启动 查看登录密码 登录MySQL 修改密码及支持远程连接 远程连接MySQL 前提步骤 拥有openEuler24.03 LTS环境,可参考:Vmware下安装openEule…...

gflags 安装及使用
目录 引言 安装 如何用 gflags 库写代码 如何用命令行使用 gflags 库 gflags 库的其他命令行参数 引言 gflags 是 Google 开发的一个开源库,用于 C 应用程序中命令行参数的声明、定义 和解析。 gflags 库提供了一种简单的方式来添加、解析和文档化命令行标…...

Linux面试题集合(2)
查看系统磁盘使用,当前目录下所有文件夹的使用情况 df -h du -h 更改目录所有人和所有组,包括里面的文件夹下的文件,递归更改 chown -R newowner:newgroup 目录名 只更改文件所有人或者只更改文件所有组 chown newowner file chgrp newgroup …...

致敬经典 << KR C >> 之打印输入单词水平直方图和以每行一个单词打印输入 (练习1-12和练习1-13)
1. 前言 不知道有多少同学正在自学C/C, 无论你是一个在校学生, 还是已经是上班族. 如果你想从事或即将从事软件开发这个行业, C/C都是一个几乎必须要接触的系统级程序开发语言. 虽然现在有Rust更安全的系统级编程语言作为C/C的替代, 但作为入门, C应该还是要好好学的. C最早由B…...
std::ratio<1,1000> 是什么意思?
author: hjjdebug date: 2025年 05月 14日 星期三 09:45:24 CST description: std::ratio<1,1000> 是什么意思? 文章目录 1. 它是一种数值吗?2. 它是一种类型吗?3. std:ratio 是什么呢?4. 分析一个展开后的模板函数5.小结: …...

基于Llama3的开发应用(二):大语言模型的工业部署
大语言模型的工业部署 0 前言1 ollama部署大模型1.1 ollama简介1.2 ollama的安装1.3 启动ollama服务1.4 下载模型1.5 通过API调用模型 2 vllm部署大模型2.1 vllm简介2.2 vllm的安装2.3 启动vllm模型服务2.4 API调用 3 LMDeploy部署大模型3.1 LMDeploy简介3.2 LMDeploy的安装3.3…...
2025.05.17淘天机考笔试真题第三题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 奇偶平衡树分割问题 问题描述 K小姐是一位园林设计师,她设计了一个由多个花坛组成的树形公园。每个花坛中种植了不同数量的花…...

windows 10 做服务器 其他电脑无法访问,怎么回事?
一般我们会先打开win10自己的防火墙策略,但是容易忽略 电脑之间 路由器上的防火墙,此时也需要查看一下,可以尝试先关闭路由器防火墙,如果可以了,再 设置路由器上的防火墙规则。 将路由器的上网设置 改成 路由模式 &a…...

Linux进程信号处理(26)
文章目录 前言一、信号的处理时机处理情况“合适”的时机 二、用户态与内核态概念重谈进程地址空间信号的处理过程 三、信号的捕捉内核如何实现信号的捕捉?sigaction 四、信号部分小结五、可重入函数六、volatile七、SIGCHLD 信号总结 前言 这篇就是我们关于信号的最…...
【从设置到上传的全过程】本地多个hexo博客,怎么设置ssh才不会互相影响
偶然间,想多建一个博客,但电脑已经有一个博客了,怎么设置ssh才不会互相影响呢? 在 Windows 系统上设置多个 Hexo 博客的 SSH 配置,避免互相影响,通常户就需要为每个博客配置不同的 SSH 密钥,并…...
顶层架构 - 消息集群推送方案
一、推送基础概念简述 在即时通讯(IM)系统中,最基础的一件事就是“如何把消息推送给用户”。为了实现这个过程,我们要先了解两种常见的网络通信方式:HTTP 和 WebSocket。 1. HTTP 是什么? HTTP 就像一次性…...
Python训练打卡Day26
函数专题1:函数定义与参数 知识点回顾: 函数的定义变量作用域:局部变量和全局变量函数的参数类型:位置参数、默认参数、不定参数传递参数的手段:关键词参数传递参数的顺序:同时出现三种参数类型时 到目前为…...
构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
一、建造者模式的本质与核心价值 在面向对象的软件设计中,创建复杂对象一直是一个需要精心处理的问题。当一个对象的构建需要多个步骤,并且这些步骤具有不同的组合方式时,传统的构造函数方式会显得力不从心。建造者模式(Builder …...

报表控件stimulsoft教程:如何在报表和仪表板中创建热图
Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了…...
(8)python开发经验
文章目录 1 下载python2 pip安装依赖无法访问3 系统支持4 下载python文档5 设置虚拟环境6 编译安装python 更多精彩内容👉内容导航 👈👉Qt开发 👈👉python开发 👈 1 下载python 下载地址尽量不要下载最新版…...
0x08.Redis 支持事务吗?如何实现?
回答重点 Redis 支持事务,但它的事务与 MySQL 等关系型数据库的事务有着本质区别。MySQL 中的事务严格遵循 ACID 特性,而 Redis 中的事务主要保证的是命令执行的原子性和隔离性,即所有命令在一个不可分割的操作中顺序执行,不会被其他客户端的命令请求所打断。 最关键的区…...

win32相关(字符编码)
字符编码 ASCII编码 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是最基础的字符编码标准,用于在计算机和其他设备中表示文本 基本概念 7位编码: ASCII使用7位二进制数&#x…...

使用Langfuse和RAGAS,搭建高可靠RAG应用
大家好,在人工智能领域,RAG系统融合了检索方法与生成式AI模型,相比纯大语言模型,提升了准确性、减少幻觉且更具可审计性。不过,在实际应用中,当建好RAG系统投入使用时,如何判断接收信息是否正确…...
VSCode + Cline AI辅助编程完全指南
VSCode Cline AI辅助编程完全指南 在当今AI快速发展的时代,程序员可以通过AI工具极大地提高工作效率。本教程将详细介绍如何使用VSCode结合Cline(Claude AI助手)进行AI辅助编程,帮助你提高开发效率,解决复杂问题。 …...

android studio导入项目
如果 gradle-8.0-bin.zip 没有下载成功 可以点击进入这个网站:https://services.gradle.org/distributions/ 找到和自己本版相同的gradle-8.0-bin.zip文件找到自己版本进行下载; 如果下载依赖失败, 可以手动下载依赖编译过程中的jar https://repo.maven.apache.org/…...

Autosar Nvm下电存储实现方式-基于ETAS工具
文章目录 前言Autosar Nvm相关定义Nvm Ram Block States状态切换Nvm_WriteAll函数NvBlock配置生成代码分析及使用总结前言 Nvm中存储的数据,一般有两种存储方式,一个是立即存,一个是下电存,之前介绍过立即存的配置,本文介绍下电存的配置及实现 Autosar Nvm相关定义 Nvm…...