Nginx 网站服务
Nginx
稳定性高
(但是没有apache稳定)
版本号:1.12 1.20 1.22
系统资源消耗低
(处理http请求的并发能力很高,单台物理服务器可以处理30000-50000个并发请求)
稳定:一般在企业中,为了保持服务器稳定,并发量的设置在20000个左右。
占用内存2M左右;keep-alive则占用内存在3M左右
Nginx主要功能
- 静态文件服务:nginx可以直接提供静态文件的服务,如 HTML,CSS,AVAScript,图片等能够高效地处理并且响应静态文件的请求
- 反向代理:可作为反向代理的服务器,将客户端的请求转发给后端多个服务器,并且可以实现负载均衡,高可用,从而提高整个集群的性能以及可靠性。
客户端请求时,沟通代理服务器会把请求流量按轮询算法,转发到后台不通的服务器上,实现负载均衡,高可用。- 处理动态内容:Nginx处理动态内容很差,php node.is java python nginx可以代理请求,然后发送到后端的动态服务处理;动态服务器理完之后,Nginx来把动态请求响应给客户端。
- SSL/TLS加密:HTTPS的加密方式,数字证书验证机制。
- 虚拟主机:Nginx可以在一台服务器上设置多个虚拟主机;同一个服务器上可以有多个域名和站点
- URL重定向:可以实现灵活的url重写和重定向。
- 缓存功能:Nginx自带缓存功能。
- 日志功能:可以详细的记录请求的信息,包括访问时间,请求路径 ip地址,响应状态,有助于故障排查
系统控制的日志,记录在/ar/log/messages
业务日志:aess.og error.log aess记录的谁访问我了,都是访问成功的记录;
error日志也记录谁访问了我,但是记录的是访问失败的记录。
正向代理
客户端 —— (运营商) —— nginx服务器 —— web服务器
VPN也是典型的正向代理;已知后端服务器,请求只会往固定的服务器发送
反向代理
客户端 —— nginx服务器(代理) ——
( 通过轮询算法,随机指向其中一台web服务器 ) ——
web服务器1 或 web服务器2 或 web服务器3 (这三天服务器称之为集群)
从而实现了高可用、负载均衡
Nginx的主要应用场景
- 静态服务
- 反向代理、负载均衡
- 缓存服务
- 动态服务
Nginx是如何实现高并发的 *面
- Nginx自身代码的问题: 大量的底层代理进行了优化,同时自带了一个功能模块。epol模块,支持高并发。
- Nginx也是一个master进程控制多个work进程。master负责收集和分发请求,work是实际执行者。每一个请求进来,master就会拉起一个work进程处理请求,同时master进程也负责监控worker的状态
worker的数量和cpu要一致或者是cpu的2倍.
worker处理请求的过程中,只受内存大小的限制。
所以可以处理多个请求,再加上nginx本身就是轻量级的服务,处理请求时占用的内存本身就很少,所以可以起到大并发处理的能力。二者之间相互依赖,相互补充
建立 Nginx 服务
关闭防火墙
systemctl stop firewalld
setenforce 0
安装依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
创建运行用户、组
useradd -M -s /sbin/nologin nginx
(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地 控制其访问权限)
编译安装 Nginx
tar -xf nginx-1.22.0.tar.gz -C /opt/
解压nginx安装包
--with-http ssl module\ #http协议的加密模块
--with-http_v2 module\ #安装http2.0模块
--with-http realip module\ #允许nginx获取客户端的真实ip地址
--with-http stub status module\ #可以记录nginx访问状态信息的模块
--with-http_gzip static_module\ #支持页面压缩功能
--with-pcre\ #支持pcre库
--with-stream\ #支持tcp/udp代理模块
--with-stream ssl module\ #tcp/udp的加密横块
--with-stream realip module #允许nginx作为代理服务器时,可以获取客户端的ipmake -j 4 && make install
编译并安装
安装后生成四个文件及功能
- conf:保存的是所有nginx的配置文件,其中最核心的就是nginx.conf
- html:保存nginx的web文件,这是默认目录可改
- logs:保存日志文件的位置
- sbin:nginx二进制的启动脚本,可以结合不同
50x.html:是nginx默认的错误页面显示
添加Nginx系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
赋权限
chown -R nginx.nginx /usr/local/nginx #修改权限
常用命令
- nginx -t:检查配置文件是否配置正确。
- nginx -v:查看niginx的版本号
- nginx -s:向主进程传输信号 —— 停止、开启、重启、重新加载
- niginx -c:设置配置文件的默认路径
- ulimit -a:
信号符
信号符结合kill命令使用
- kill -USR1 pid号 #日志分割
- kill -s HUP pid号 #只要是kill,只能跟pid号,重新加载
- killall -s HUP nginx #可以跟服务名,也可以用pid号
- kill -s QUIT pid号 #优雅退出(有人访问时不会结束进程,访问完后才会结束进程)
- kill -s WHICH pid号 #优雅介绍work进程(请求结束后,才结束work)
创建目录
mkdir -p /usr/local/nginx/run/
修改配置文件
vim /usr/local/nginx/conf/nginx.conf
pid /usr/local/nginx/run/nginx.pid;
#找到 pid的位置修改
重启服务
systemctl daemon-reload
systemctl restart nginx
重新加载配置,并重启服务
全局配置的模块
- events模块:配置影响nginx服务器与用户之间的网络链接
- http模块:只要是针对http请求的配置,代理,缓存,日志,反向代理,虚拟web主 机,也可写在stream中,server块
非http请求的方式,不能写在该模块当中
反向代理:七层,四层方向代理,不能写在http的模块.- server块:配置虚拟主机的相关参数,一个HTTP模块当中可以有多个server模块
包含在HTTP模块中,不能单独设置- location块:匹配的是uri,包含在server当中不能单独设置
location模块中 root和alias的区别 *面
- root:指定的目录和location匹配的uri之间做的一个拼接,
/opt/ky30/这俩个路径都真实存在而且都是目录,并且uri目录里面要有web文件。- alias : 匹配指定路径下的web文件
/root后面有没有 "/" 无所谓,加不加都可;root标签可以使用重定向
alias加了 "/" 后面也必须有 "/" 否则匹配不到;alias不可以设置重定向
- porxy_pass:反向代理
- upstream:反向代理指定服务器的命令,在HTTP模块中 七层,基于IP和端口,走HTTP协议
- stream:四层,走的是TCP或者udp流量,不能写入HTTP,写在全局配置
修改Linux服务器最大打开文件数 *面
events块中 —— " worker_connections 1024 " 代表默认的最大进程连接数为1024
修改连接数有两种方法,如下:
可在命令行修改:
ulimit -n 65535
vim /etc/security/limits.conf
* soft nproc 65535: 最大进程数软限制为 65535,即可以使用 ulimit -u 命令查看和修改的值
* hard nproc 65535: 最大进程数硬限制为 65535,即最大可分配的进程数
* soft nofile 65535:最大打开文件数软限制为 65535,可以使用 ulimit -n 命令查看和修改值
* hard nofile 65535:最大打开文件数硬限制为 65535,即最大可分配的文件数
相关文章:
Nginx 网站服务
Nginx 稳定性高 (但是没有apache稳定) 版本号:1.12 1.20 1.22 系统资源消耗低 (处理http请求的并发能力很高,单台物理服务器可以处理30000-50000个并发请求) 稳定:一般在企业中,为了保持服务器稳定,并发量的…...
Python爬虫——爬虫时如何知道是否代理ip伪装成功?
前言 在进行爬虫时,我们可能需要使用代理IP来伪装自己的身份,以避免被网站封禁。如何判断代理IP是否伪装成功呢?本篇文章将围绕这个问题展开讲解,同时提供Python代码示例。 1. 确认代理IP地址 首先,我们需要确认代理…...
flink1.17 json_tuple udf 实现
使用效果 思路: flink1.17要求复杂类型必须通过hint指定每个字段类型, 只有固定个数,都是基础类型的flink才能自动推断. 这就导致json_tuple返回不定长参数无法搞定. 所以这里通过返回字符串数组来解决. 同时带来新的问题: 数组元素类型一样,导致fastjson2解析到的int也需要…...
Vue3实现6位验证码输入框,用户可以连续输入和删除
实现代码 可以随意填写删除 <template><div class"verification-container"><inputv-for"(code, index) in verificationCodes":key"index"v-model"verificationCodes[index]"input"handleInput(index, $event…...
如何在终端设置代理(设置jupyter notebook同理)
设置代理 在终端(我用的gitbash)下执行 set HTTP_PROXYhttp://<user>:<password><proxy server>:<proxy port> set HTTPS_PROXYhttp://<user>:<password><proxy server>:<proxy port>其中: user、password&#…...
git报错:Error merging: refusing to merge unrelated histories
碰对了情人,相思一辈子。 打命令:git pull origin master --allow-unrelated-histories 然后等一会 再push 切记不要有冲突的代码 需要改掉~...
QT-QLabel显示图片,按QLabel控件的大小自动缩放
要按照 QLabel 控件的大小调整并显示图片,你可以使用 scaled() 函数将 QPixmap 对象进行缩放,然后将缩放后的图片设置到 QLabel 上。下面是一个示例代码: #include <QApplication> #include <QLabel> #include <QPixmap>i…...
【JS代码调试技巧】你必须知道的Javascript技巧汇总
注:最后有面试挑战,看看自己掌握了吗 文章目录 使用控制台检查变量值控制台使用 type of 检查变量的类型捕获拼错的变量名和函数名捕获使用赋值运算符而不是相等运算符捕捉函数调用后缺少的左括号和右括号 🌸I could be bounded in a nutshel…...
JAVA-@Configuration注解属性proxyBeanMethods
Configuration注释中的proxyBeanMethods参数是springboot1.0,升级到springboot2.0之后新增的比较重要的内容,该参数是用来代理bean的。 理论 首先引出两个概念:Full 全模式,Lite 轻量级模式 Full(proxyBeanMethods true) :pro…...
锁策略, cas 和 synchronized 优化过程总结
目录 一、锁策略 1. 乐观锁和悲观锁 2. 读写锁 3. 重量级锁和轻量级锁 4. 自旋锁 5. 公平锁和非公平锁 6.可重入锁 vs 不可重入锁 二、CAS 1. CAS 是怎么实现的 1) 实现原子类 2) 实现自旋锁 3. CAS 的 ABA 问题 三、Synchronized 原理 1.Synchronized 加锁工作过程 3.1 偏向…...
正点原子HAL库入门1~GPIO
探索者F407ZGT6(V3) 理论基础 IO端口基本结构 F4/F7/H7系列的IO端口 F1在输出模式,禁止使用内部上下拉 F4/F7/H7在输出模式,可以使用内部上下拉不同系列IO翻转速度不同 F1系列的IO端口 施密特触发器:将非标准方波,整形为方波 当…...
华为VRP 系统基础配置
1.flash 相当于电脑的 硬盘 2.NVRAM 拿来专门存放系统配置文件 3.RAM 运行内存 4.ROM 系统引导 1.修改系统名[Huawei]sysname SWL1 2.配置登入信息 [SWL1]header shell information "Welocom to the learning" [SWL1]q <SWL1>q User interface con0 …...
面试热题(打家窃舍)
一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负…...
【Deepsort】C++版本Deepsort编译(依赖opencv,eigen3)
目录 下载源码安装onnxruntime安装Eigen3编译opencv 下载源码 https://github.com/shaoshengsong/DeepSORT安装onnxruntime 安装方法参考博客 安装Eigen3 当谈及线性代数计算库时,Eigen3是一个强大而受欢迎的选择。Eigen3是一个C模板库,提供了许多用…...
Synchronized锁升级过程
无锁状态(无锁):当一个线程访问一个没有被锁定的Synchronized代码块时,处于无锁状态。此时,线程可以直接进入临界区执行代码,不需要进行任何锁协调。 偏向锁状态(偏向锁)࿱…...
汽车电子功能安全
功能安全考虑 分析方法:FMEA,DFMEA(设计潜在失效模式和影响分析) 严重度(Severity),暴露率(Exposure),可控性(Controllability)评估…...
ARM进阶:内存屏障(DMB/DSB/ISB)的20个使用例子详解
在上一节内存屏障指令之DMB、DSB和ISB详解中,介绍了一下内存屏障的三个指令的作用并举了一些例子,对于内存屏障指令的使用时机,与处理器架构(比如Cortex-M和Cortex-A)和处理器的系统实现(同样的架构,有不同的实现,如ST…...
Cpp学习——模板
模板? 目录 模板? 1.介绍 2.函数模板的使用 3.函数模板的强制转换or显式调用 四,模板的分类 1.介绍 在Cpp3.0中,祖师爷便引入了模板的概念。这是一个重大的变革,为后来的Cpp标准化打下了铺垫。也正是因为有了模板࿰…...
HTTP 协议 版本详解
HTTP 协议 介绍<一> 简介 HTTP(Hypertext Transfer Protocol)是一种用于在客户端和服务器之间进行通信的协议。它是现代互联网中最常用的应用层协议之一。HTTP 的主要目的是实现超文本资源的传输,例如 HTML 文档、图像和音频文件等。…...
PHP语言基础知识(超详细)
文章目录 前言第一章 PHP语言学习介绍 1.1 PHP部署安装环境1.2 PHP代码工具选择 第二章 PHP代码基本语法 2.1 PHP函数知识介绍2.2 PHP常量变量介绍 2.2.1 PHP变量知识:2.2.2 PHP常量知识: 2.3 PHP注释信息介绍2.4 PHP数据类型介绍 2.4.1 整形数据类型2.4…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
