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等浏览器都可访问

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式培训之数据结构学习(五)栈与队列

一、栈 (一)栈的基本概念 1、栈的定义: 注:线性表中的栈在堆区(因为是malloc来的);系统中的栈区存储局部变量、函数形参、函数返回值地址。 2、栈顶和栈底: 允许插入和删除的一端…

深度学习---知识蒸馏(Knowledge Distillation, KD)

一、知识蒸馏的本质与起源 定义: 知识蒸馏是一种模型压缩与迁移技术,通过将复杂高性能的教师模型(Teacher Model)所学的“知识”迁移到轻量级的学生模型(Student Model),使学生模型在参数量和计…

ARP Detection MAC-Address Static

一、ARP Detection(ARP检测) ✅ 定义: ARP检测是一种防止ARP欺骗攻击的安全机制。它通过监控或验证网络中的ARP报文,来判断是否存在伪造的ARP信息。 🔍 工作原理: 网络设备(如交换机&#xf…

基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真

基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真 在工业设计与制造领域,刀具的设计与优化是提高生产效率和产品质量的关键环节之一。本文将介绍如何使用 Python 复现一个用于标准干涉槽型设计计算及仿真的界面程序,旨在帮助工程师和…

Python绘制南丁格尔玫瑰图:从入门到实战

Python绘制南丁格尔玫瑰图:从入门到实战 引言 南丁格尔玫瑰图(Nightingale Rose Chart),也被称为极区图(Polar Area Chart),是一种独特的数据可视化方式。这种图表由弗洛伦斯南丁格尔&#xff…

计算机操作系统概要

不谋万世者,不⾜谋⼀时。不谋全局者 ,足谋⼀域 。 ——陈澹然《寤⾔》《迁都建藩议》 操作系统 一.对文件简单操作的常用基础指令 ls ls 选项 目录或⽂件名:罗列当前⽬录下的⽂件 -l:以长格式显示⽂件和⽬录的详细信息 -a 或 --all&…

<PLC><视觉><机器人>基于海康威视视觉检测和UR机械臂,如何实现N点标定?

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,相关设备如触摸屏(HMI)、交换机等工控产品,如果有…

从专家编码到神经网络学习:DTM 的符号操作新范式

1st author: Paul Soulos paper: Differentiable Tree Operations Promote Compositional Generalization ICML 2023 code: psoulos/dtm: Differentiable Tree Machine 1. 问题与思路 现代深度学习在连续向量空间中取得了巨大成功,然而在处理具有显式结构&#x…

微信小程序第三方代开发模式技术调研与实践总结

🚀 微信小程序第三方代开发模式技术调研与实践总结 📖 前言 随着企业对私有化品牌运营诉求的增加,许多大型客户希望将原本由 SaaS 平台统一提供的小程序迁移至自有主体(AppID)下运行,同时又希望继续沿用 SaaS 平台的业务服务与数据托管方式。微信开放平台提供的“小程…

开启智能未来:DeepSeek赋能行业变革之路

前言 在人工智能重构生产关系的2025年,DeepSeek以其革命性的推理能力和Python生态的技术延展性,正在重塑内容创作与数据智能的边界。本书以"工具迭代思维升维"为双轮驱动,构建从认知突破到商业落地的完整知识图谱。 DeepSeek的崛…

常见三维引擎坐标轴 webgl threejs cesium blender unity ue 左手坐标系、右手坐标系、坐标轴方向

平台 / 引擎坐标系类型Up(上)方向Forward(前进)方向前进方向依据说明Unity左手坐标系YZtransform.forward 是 Z 轴正方向,默认摄像机朝 Z 看。Unreal Engine左手坐标系ZXUE 的角色面朝 X,默认使用 GetActor…

Cold Diffusion: Inverting Arbitrary Image Transforms Without Noise论文阅读

冷扩散:无需噪声的任意图像变换反转 摘要 标准扩散模型通常涉及两个核心步骤:图像降质 (添加高斯噪声)和图像恢复 (去噪操作)。本文发现,扩散模型的生成能力并不强烈依赖于噪声的选择&#xf…

Java并发编程核心组件简单了解

一、Lock体系 1. ReentrantLock(可重入锁) Lock lock new ReentrantLock(); lock.lock(); try {// 临界区代码 } finally {lock.unlock(); }特点:可重入、支持公平/非公平策略优势:可中断锁获取、定时锁等待使用场景&#xff1…

第二个五年计划!

下一阶段!5年后!33岁!体重维持在125斤内!腰围74! 健康目标: 体检指标正常,结节保持较小甚至变小! 工作目标: 每年至少在一次考评里拿A(最高S,A我理…

Redis(三) - 使用Java操作Redis详解

文章目录 前言一、创建项目二、导入依赖三、键操作四、字符串操作五、列表操作六、集合操作七、哈希表操作八、有序集合操作九、完整代码1. 完整代码2. 项目下载 前言 本文主要介绍如何使用 Java 操作 Redis 数据库,涵盖项目创建、依赖导入及 Redis 各数据类型&…

【Folium】使用离线地图

文章目录 相关文献离线地图下载Folium 使用离线地图 相关文献 Folium — Folium 0.19.5 documentationOffline Map Maker 离线地图下载 我们使用 Offline Map Maker 进行地图下载。 特别注意:Folium 默认支持 WGS84 坐标系,建议下载 WGS84 坐标系的地…

DeepSearch:字节新一代 DeerFlow 框架

项目地址:https://github.com/bytedance/deer-flow/ 【全新的 Multi-Agent 架构设计】独家设计的 Research Team 机制,支持多轮对话、多轮决策和多轮任务执行。与 LangChain 原版 Supervisor 相比,显著减少 Tokens 消耗和 API 调用次数&#…

Qt—用SQLite实现简单的注册登录界面

1.实现目标 本次实现通过SQLite制作一个简易的登录窗口,当点击注册按钮时,登录窗口会消失,会出现一个新的注册界面;完成注册或退出注册时,注册窗口会消失,重新出现登录窗口。注册过的用户信息会出现在SQLi…

day 18:零基础学嵌入式之数据结构——

一、基础内容 1.数据结构:相互之间存在一种或多种特定关系的数据元素的集合。 2.逻辑结构 (1)集合,所有数据在同一个集合中,关系平等。 (2)线性,数据和数据之间是一对一的关系 &am…

【SSL证书系列】客户端如何验证https网站服务器发的证书是否由受信任的根证书签发机构签发

客户端验证HTTPS网站证书是否由受信任的根证书颁发机构(CA)签发,是一个多步骤的过程,涉及证书链验证、信任锚(Trust Anchor)检查、域名匹配和吊销状态验证等。以下是详细的验证流程: 1. 证书链的…