企业高性能WEB服务器—Nginx
Nginx介绍
Nginx是一款轻量级的网页服务器、反向代理服务器以及电子邮件代理服务器。
具有高并发(特别是静态资源)、占用系统资源少的特性。它不仅是Web服务软件,还具有反向代理负载均衡功能和缓存服务功能
具备如下基本特性
可针对静态资源高速高并发访问及缓存。
可使用反向代理加速,并且可进行数据缓存。
具有简单负载均衡、节点健康检查和容错功能。
为什么 Nginx 总体性能比 Apache 高 ?
Nginx 使用最新的 epoll ( Linux 2.6 内核)和 kqueue ( freebsd ) 异步网络 I/O 模型,而 Apache 使用 的是传统的 select 模型。目前 Linux 下能够承受高并发访问的 Squid 、Memcached 软件采用的都是 epoll 模型。 处理大量连接的读写时,Apache 所采用的 select 网络 I/O 模型比较低效。
Nginx的安装
RPM包获取:Index of /packages/
源码包获取:Index of /download/
配置文件/etc/nginx/nginx.conf
主目录/usr/share/nginx/html
查看版本 /usr/sbin/nginx -t
配置文件语法检查/usr/sbin/nginx -t
服务启动停止 /etc/init.d/nginx {start | stop | restart | reload | status}
Nginx 软件功能模块说明
( 1 ) Nginx 核心功能模块
Nginx 核心功能模块负责 Nginx 的全局应用,主要对应主配置文件的 Main 区块和Events 区块区域,这 里有很多 Nginx 必须的全局
参数配置。
( 2 ) 标准的 http 功能模块集合
[root@www ~ ] # tree /application/nginx/
# <== 如果 tree 命令找不到需要 yum intall tree -y 安装
配置文件说明
[root@web01 conf]# cat nginx.conf worker_processes 1; ← worker 进程数量 events { ←事件区块worker_connections 1024; ←每个worker进程可以处理的连接数 } ←事件区块结束 http { ← HTTP 区块include mime.types; ←支持的媒体文件default_type application/octet-stream; ←默认的媒体类型sendfile on; ←高效传输模式keepalive_timeout 65; ←超时时间server { ← server 区块listen 80; ←端口server_name localhost; ←域名location / { ←第一个location区块root html; ←站点目录index index.html index.htm; ←首页文件} ←第一个location区块结束error_page 500 502 503 504 /50x.html; ← 错误信息配置location = /50x.html { 文件位置root html; 在哪找:路径} } ← server 区块结束 } ← HTTP 区块结束
Nginx-web 应用
1.静态页面
[root@openEuler1 html]# cd /usr/share/nginx/html/
[root@openEuler1 html]# echo "test page." >/usr/share/nginx/html/index.html
2.虚拟主机配置
基于域名的虚拟主机--基本对外提供服务的网站使用的都是基于域名的虚拟主机
基于端口的虚拟主机--通过不同的端口来区分不同的虚拟主机,此类虚拟主机对 应的企业应用主要为公司内部网
基于IP的虚拟主机----通过不同的IP区分不同的虚拟主机
-----基于域名虚拟主机示例 1)配置文件添加虚拟主机部分
server {listen 80;server_name bbs.test.com;location / {root html/bbs;index index.html index.htm;}}server {listen 80;server_name blog.test.com;location / {root html/blog;index index.html index.htm;}}
创建站点目录
mkdir /usr/share/nginx/html/blog
mkdir /usr/share/nginx/html/bbs
创建主页文件
echo " blog test" > /usr/share/nginx/html/blog/index.html
echo " bbs test" > /usr/share/nginx/html/bbs/index.html
测试
echo "192.168.190.164 blog.test.com bbs.test.com" >> /etc/hosts
[root@localhost]# curl http://blog.test.com
[root@localhost]# curl http://bbs.test.com日志配置
错误日志:记录nginx运行错误情况信息
访问日志:记录用户访问日志情况
1>配置错误日志。
系统默认配置
error_log /var/log/nginx/error.log
2>配置访问日志。 系统默认配置
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main;
访问日志说明:
[root@openEuler1 nginx]# tail -1 access.log 192.168.190.164 - - [13/Mar/2025:23:05:45 +0800] "GET / HTTP/1.1" 200 10 "-" "curl/7.79.1" "-" $remote_addr:客户端地址 $remote_user:远程访问用户 [$time_local]:访问时间 $request:请求行信息 $status:状态码 $body_bytes_sent:响应报文主体内容大小 $http_user_agent:客户端浏览页面信息工具 $http_x_forwarded_for:反向代理转发
location指令
location 指令的作用是根据用户请求的URI来执行不同的应用。
location使用的语法为
location [=|~|~*|^~] uri {.... }
~ 匹配内容区分大小写
~* 匹配内容不区分的小写
!~ 取反
^~ 但多个匹配同时存在,优先匹配 ^~匹配的内容;不做正则表达式的检查 (优先处理)
测试location 的访问
#location / {root html;# autoindex on;# index index.html index.htm;#}location / {return 401;}location = / {return 402;}location /documents/ {return 403;}location ^~ /images/ {return 404;}location ~* \.(gif|jpg|jpeg)$ {return 500;}
测试location 的访问 访问测试:
[root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 192.168.150.12/docuements 401 [root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 192.168.150.12 402 [root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s http://192.168.150.12/documents/ 403 [root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 192.168.150.12/images/a.jpg 404 [root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 192.168.150.12/docuements/abc.jpg 500
基于地址访问控制
实例:限制主机192.168.190.1 访问www.b.com
借助于之前虚拟主机环境:
1) 修改配置文件
server {listen 192.168.190.146:80;server_name www.b.com;access_log /data/web2/access.log combined;location / {autoindex on;root /data/web2;index index.html index.htm;deny 192.168.190.1;allow 192.168.190.0/24;deny all;}
#提示:从上到下的顺序,类似iptables。匹配到了便跳出。
2) 重启nginx
3) 客户端测试
相关文章:

企业高性能WEB服务器—Nginx
Nginx介绍 Nginx是一款轻量级的网页服务器、反向代理服务器以及电子邮件代理服务器。 具有高并发(特别是静态资源)、占用系统资源少的特性。它不仅是Web服务软件,还具有反向代理负载均衡功能和缓存服务功能 具备如下基本特性 可针对静态资…...
C++跨平台开发实践:深入解析与常见问题处理指南
一、跨平台开发基础架构设计 1.1 跨平台架构的核心原则 分层设计模式: 平台抽象层(PAL):将平台相关代码集中管理 核心逻辑层:完全平台无关的业务代码 平台实现层:针对不同平台的特定实现 代码组织最佳实践: pro…...

Python MNE-Python 脑功能磁共振数据分析
一、什么是Python MNE-Python 脑功能磁共振数据分析 为大脑功能磁共振成像数据分析工具,致力于为神经科学研究提供便捷、高效的数据分析处理工具。MNE-Python提供了处理和分析脑电图(EEG)、…...

DevExpressWinForms-AlertControl-使用教程
文章目录 AlertControl-使用教程一、将 AlertControl 添加到 Form二、编辑 AlertControl 的 HtmlTemplateHTML Template Editor介绍编辑HTML Template 三、使用AlertControl弹出AlertAlert中的按钮事件获取 Alert 标题等信息向Alert传递参数 总结源码 AlertControl-使用教程 一…...
SurfSense开源程序是NotebookLM / Perplexity / Glean的开源替代品,连接到外部来源,如搜索引擎
一、软件介绍 文末提供程序和源码下载 虽然 NotebookLM 和 Perplexity 等工具令人印象深刻,并且对于对任何主题/查询进行研究都非常有效,但 SurfSense 通过与你的个人知识库集成来提升这种能力。它是一个高度可定制的 AI 研究代理,连接到外…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.4 可视化报告输出
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 电商数据分析实战:基于PostgreSQL的可视化报告生成全流程9.4 可视化报告输出9.4.1 可视化报告设计框架9.4.1.1 报告目标与受众9.4.1.2 数据准备与指标体系 9.4.2…...

屎上雕花系列-2nd
以下为“屎上雕花”的尝试2nd 使用Deepseek扩容而来,我竟然没有找到明显的错误,太强大了,工作改变生活了 LeCroy 以太网与 SAN 网络测试解决方案 硬件平台一:Xena 以太网流量生成器 Xena 以太网流量生成器是一款高性能的网络测…...

MCP专题| 突破LLM三大瓶颈!模型上下文协议(MCP)如何重塑AI交互体验?
最近引爆了整个AI圈的Model Context Protocol(MCP)到底是什么?你是否也和小编一样一头雾水,不是说好的LLM风潮呢,怎么现在变成通信协议啦?最近小编也是找到一篇神仙综述,带你一遍搞清什么是MCP的…...

我的AD快捷键方案【留存】
留存我的快捷键方案文件,以便换电脑的时候能够快速导入快捷键。 我的快捷键文件: 通过网盘分享的文件:JB20250509.DXPPrf 链接: https://pan.baidu.com/s/1t6V0GjdGFPNSFydP5Z_tfg?pwde4xs 提取码: e4xs 复制这段内容后打开百度网盘手机Ap…...
uni-app,小程序自定义导航栏实现与最佳实践
文章目录 前言为什么需要自定义导航栏?基本实现方案1. 关闭原生导航栏2. 自定义导航栏组件结构3. 获取状态栏高度4. 样式设置 内容区域适配跨平台适配要点iOS与Android差异处理 常见导航栏效果实现1. 透明导航栏2. 滚动渐变导航栏3. 自定义返回逻辑 解决常见问题1. …...
解决osx-arm64平台上conda默认源没有提供 python=3.7 的官方编译版本的问题
CONDA_SUBDIRosx-64 conda create -n py37_env python3.7 是一个用于创建特定架构环境的命令,主要针对 macOS 系统。下面为你详细解析它的功能和作用: 命令功能解析 这个命令的主要功能是创建一个名为 py37_env 的 Conda 环境,并且指定该环…...

Edwards爱德华STP泵软件用于操作和监控涡轮分子泵
Edwards爱德华STP泵软件用于操作和监控涡轮分子泵...
vue内写websocket实时订阅
首先安装插件reconnecting-websocket 或者不安装也可以,这个插件只是在断连之后可以重新连接 引入插件 import ReconnectingWebSocket from reconnecting-websocket;。 js文件: export const WebSocketClass (url, params, successFn, errorFn, clo…...

QT6(35)4.8定时器QTimer 与QElapsedTimer:理论,例题的界面搭建,与功能的代码实现。
(112) (113)模仿随书老师给的源代码搭建的, LCD 显示的部分不一样 : (114)以下开始代码完善: 关联定时器的信号与槽函数 : (115)…...
在R语言中如何将列的名字改成别的
在 R 中,更改数据框(data frame)中列的名字可以通过多种方法实现。以下是几种常见的方法: 方法 1:使用 names() 函数 names() 函数可以获取或设置数据框的列名。 示例 假设我们有一个数据框 data: dat…...
北斗导航 | RTKLib中模糊度解算详解,公式,代码
模糊度解算 一、模糊度解算总体流程二、核心算法与公式推导1. **双差模糊度定义**2. **浮点解方程**三、LAMBDA算法实现细节1. **降相关变换(Z-transform)**2. **整数最小二乘搜索**3. **Ratio检验**四、部分模糊度固定(Partial Ambiguity Resolution, PAR)1. **子集选择策…...

02 mysql 管理(Windows版)
一、启动及关闭 MySQL 服务器 1.1 通过 “服务” 管理工具 winr打开运行,输入services.msc 找到MySQL80,这个是我们在安装mysql的时候给的服务的名称,具体见文章mysql 安装 右键选择启动或者停止。 1.2 通过命令提示符 1.2.1 关闭命令…...

不同渲染任务,用CPU还是GPU?
一、CPU与GPU渲染的核心差异与选型建议 CPU渲染的核心优势与适用场景 复杂场景处理能力:CPU凭借强大的多核性能(如AMD Threadripper 3990x的64核)和高内存容量(最高支持512GB),擅长处理影视级光线追踪、全…...
uv简单使用
通过uv创建项目和虚拟环境 初始化项目 uv init --package my-project 初始化一个名为 my-project 的新项目,并生成必要的文件结构。 创建虚拟环境 uv venv .venv 激活虚拟环境 # For Windows .venv\Scripts\activate# For macOS/Linux source .venv/bin/acti…...
LeetCode 54.螺旋矩阵遍历的两种方法详解与对比
文章目录 方法一:边界调整法(逐层收缩)实现思路代码实现复杂度分析 方法二:矩阵旋转法(逐层剥离)实现思路代码实现复杂度分析 方法对比总结 本文介绍两种Java实现螺旋矩阵遍历的算法,并对其时间…...
手撕红黑树的 左旋 与 右旋
一、为什么需要旋转? 在红黑树中,插入或删除节点可能会破坏其五条性质,比如高度不平衡或连续红节点。 为了恢复红黑性质,我们采用局部旋转来“调整树形结构”,保持平衡。 二、旋转本质是“局部变形” 左旋和右旋不会…...
RGB矩阵照明系统详解及WS2812配置指南
RGB矩阵照明系统详解及WS2812配置指南 一、RGB矩阵照明简介 RGB矩阵照明是一种强大的功能,允许使用外部驱动器驱动的RGB LED矩阵为键盘增添绚丽的灯光效果。该系统与RGBLIGHT功能无缝集成,因此您可以使用与RGBLIGHT相同的键码来控制它,操作…...

硅基计划 学习总结 拾贰
一、二级指针 难道指针也有分等级的吗,我们学过的指针要存放变量的地址的,那二级指针是干嘛的呢? 一级指针:int a 10; int *pa &a; 指针变量,它终究是个变量,也有自己的地址 那我们以后是不是可以通…...
RabbitMQ事务机制
在RabbitMQ中,生产者为了确保消息发送成功,一种是使用 confirm 确认机制,另一种就是使用事务机制,事务机制就是允许生产者在发送消息时,将多个消息操作作为一个原子单元进行处理,要么所有操作都成功执行&am…...

【C语言指针超详解(三)】--数组名的理解,一维数组传参的本质,冒泡排序,二级指针,指针数组
目录 一.数组名的理解 二.使用指针访问数组 三.一维数组传参的本质 四.冒泡排序 五.二级指针 六.指针数组 6.1--指针数组的定义 6.2--指针数组模拟二维数组 🔥个人主页:草莓熊Lotso的个人主页 🎬作者简介:C方向学习者 &…...
主机漏洞扫描:如何保障网络安全及扫描原理与类型介绍?
主机漏洞扫描是保障网络安全的关键办法,它能对主机展开全面检测,借助这种检测能及时找出潜在的安全风险,从而避免遭受黑客攻击。下面会为你具体介绍主机漏洞扫描的有关事项。 扫描原理 主机漏洞扫描要借助漏洞库,还要借助扫描器…...

QT聊天项目DAY10
1.封装redis操作类 头文件 #ifndef REDISMANAGE_H #define REDISMANAGE_H#include "Singletion.h" #include "GlobalHead.h"class RedisManage : public Singletion<RedisManage> {friend class Singletion<RedisManage>; public:~RedisMana…...

养生:开启健康生活的钥匙
养生,是对生活的精心呵护,是通往健康之路的秘诀。以下从饮食、运动、睡眠和心态四个方面,为你呈现科学养生之道。 饮食养生:营养均衡的智慧 合理的饮食是养生的基础。遵循 “食物多样,谷类为主” 的原则,…...

基于springboot的海洋环保知识分享系统的设计与实现
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言࿰…...

操作系统 第2章节 进程,线程和作业
一:多道程序设计 1-多道程设计的目的 for:提高吞吐量(作业道数/处理时间),我们可以从提高资源的利用率出发 2-单道程序设计缺点: 设备的利用率低,内存的利用率低,处理机的利用率低 比如CPU去访问内存,CPU空转.内存等待CPU访问也是没有任何操作的.要是有多个东西要去访问不冲…...