企业高性能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服务软件,还具有反向代理负载均衡功能和缓存服务功能 具备如下基本特性 可针对静态资…...
neo4j图数据库基本概念和向量使用
一.节点 1.新建节点 create (n:GroupProduct {name:都邦高保额团意险,description: "保险产品名称"} ) return n CREATE:Neo4j 的关键字,用于创建新节点或关系。 (n:GroupProduct): n 是节点的临时别名(变量名&#…...
安全核查基线-3.用户umask设置策略
在Linux中,umask(用户文件创建掩码)是一个重要的权限管理机制,用于控制新创建的文件和目录的默认权限。umask的值决定了文件或目录的初始权限中哪些权限位会被屏蔽(即不可用)。 1. umask 的作用 文件默认权…...
UE像素流是什么
UE像素流是什么 UE像素流送是一种云渲染技术,由虚幻引擎(UE)提出,用于在浏览器中运行高画质3D应用或游戏。其原理是在远程计算机(可以是云端服务器或本地高性能服务器)上运行UE开发的应用程序,…...
【C】初阶数据结构14 -- 归并排序
本篇文章主要是讲解经典的排序算法 -- 归并排序 目录 1 递归版本的归并排序 1) 算法思想 2) 代码 3) 时间复杂度与空间复杂度分析 (1) 时间复杂度 (2) 空间复杂度 2 迭代版本的归并…...
02_线性模型(回归线性模型)
描述 线性模型是在实践中广泛使用的一类模型,线性模型利用输入特征的线性函数(linear function)进行预测。 用于回归的线性模型 对于回归问题,线性模型预测的一般公式如下: $ \widehat y w[0]*x[0]w[1]*x[1]…w[p…...
当当网Top500书籍信息爬取与分析
爬取当当网的Top500书籍信息,并对书籍的评价数量进行排序,然后绘制前十名的条形图,然后对各个出版社出版的书籍数量进行排序,绘制百分比的饼图 # 导入所需的模块 import re # 正则表达式模块,用于提取文本中的特定模…...
Spring生态全景解析:Spring、Spring MVC、SpringBoot与Spring Cloud的关系
Spring生态全景解析:Spring、Spring MVC、SpringBoot与Spring Cloud的关系 1. Spring框架简介 Spring框架是一个轻量级的Java开发框架,由Rod Johnson于2003年创建。它主要解决了企业级Java开发中的复杂性,通过依赖注入(DI)和面向切面编程(A…...
STM32-TIM定时中断(6)
目录 一、TIM介绍 1、TIM简介 2、定时器类型 3、基本定时器 4、通用定时器 5、定时中断基本结构 6、时基单元的时序 (1)预分频器时序 (2)计数器时序 7、RCC时钟树 二、定时器输出比较功能(PWM) …...
Godot4.3类星露谷游戏开发之【昼夜循环】
千里之行,始于足下 文章目录 零、 笔记一、创造时间二、产生颜色三、搭建测试环境四、测试五、免费开源资产包 零、 笔记 为了让游戏可以拥有白天和黑夜,我们需要像上帝一样,在游戏中创造时间的规则,并在不同的时间点产生不同的颜…...
工业与协议融合篇:如何将多个协议集成进一个系统?
🏭 本文为《嵌入式通信协议全解析》第六篇,深入探讨如何在工业或物联网系统中同时集成 BLE、CAN、LoRa、MQTT、RS485 等多种通信协议,实现一个高效、可控、稳定运行的嵌入式通信架构。 🧭 一、为什么需要多协议融合? 在真实产品中,单一通信协议往往无法满足所有业务需…...
java-----------------多态
多态,当前的成指的是 java 所呈现出来的一个对象 多态 定义 多态是指同一个行为具有多个不同表现形式或形态的能力。在面向对象编程中,多态通过方法重载和方法重写来实现。 强弱类型语言 javascript 或者python 是弱类型语言 C 语言,或…...
vLLM部署Qwen2-7B模型推理
vllm简介 vLLM是一个高效的大语言模型推理和部署服务系统,专为大型语言模型的高效执行而设计。它不仅支持多种量化技术以减少模型大小和加速推理过程,还提供了与OpenAI API兼容的服务接口,使得现有的应用程序能够无缝对接。 一、前提环境 …...
SSL证书格式详解:PEM、CER、DER、JKS、PKCS12等
引言 在网络安全领域,SSL/TLS证书是保障互联网通信安全的核心工具。它们通过加密连接,确保服务器与客户端之间的数据隐私和完整性。然而,对于初学者来说,SSL证书的多种格式——PEM、CER、JKS、PKCS12、PFX等——常常令人困惑。每…...
idea spring boot 打包成可执行的 JAR包
idea 2023 spring boot 2.6.13 打包成可执行的 JAR包 创建一个 简单的 spring boot 程序 idea File — New — Project 11 22 11 package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.b…...
设计模式-迭代器模式
写在前面 Hello,我是易元,这篇文章是我学习设计模式时的笔记和心得体会。如果其中有错误,欢迎大家留言指正! 案例 假设有一个Book类和一个管理书籍的BookCollection类,我们需要遍历BookCollection类中所有书籍信息。 一…...
Java 匿名内部类的作用
简化代码:无需专门定义一个具名类来实现接口或继承类,减少类文件数量,在只需简单实现特定功能时,让代码更简洁紧凑 。比如创建线程时,使用匿名内部类实现 Runnable 接口,直接在代码块中编写线程执行逻辑&am…...
MySQL数据库故障排查与解决方案
一、故障排查流程图 #mermaid-svg-hF8hhP2lrqWDbNhV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-icon{fill:#552222;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-text{fill:#552222;stroke:…...
C#学习——继承、封装、多态
一、继承 1)什么是继承? 官方话:允许一个类继承另一个类的字段和方法 个人理解:子类可以使用父类已经授权的所有字段和方法,子承父业 2)使用方式 方式:子类:父类 class…...
数据库基础:概念、原理与实战示例
在当今信息时代,数据已经成为企业和个人的核心资产。无论是社交媒体、电子商务、金融交易,还是物联网设备,几乎所有的现代应用都依赖于高效的数据存储和管理。数据库(Database)作为数据管理的核心技术,帮助…...
AI与计算机视觉(CV):目标检测与图像分割的最新进展
AI与计算机视觉(CV):目标检测与图像分割的最新进展 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 AI与计算机视觉(CV):目标检测与图像分割的…...
嵌入式开发学习日志Day17
第十一章 结构体与共用体 一、结构体 1、结构体 一般形式 【struct 标识符】 结构体中的标识符一般首字母大写; 【.】结构体成员运算符; 优先级 1 级 结合方向:从左至右; 【->】:指向结构体成员运算符&#x…...
awesome-digital-human本地部署及配置:打造高情绪价值互动指南
在数字化交互的浪潮中,awesome-digital-human-live2d项目为我们打开了本地数字人互动的大门。结合 dify 聊天 api,并借鉴 coze 夸夸机器人的设计思路,能为用户带来充满情绪价值的交互体验。本文将详细介绍其本地部署步骤、dify 配置方法及情绪…...
ClickHouse多表join的性能优化:原理与源码详解
本文将从底层原理和源代码的角度详细解释 ClickHouse 多表 JOIN 的处理过程,尽量用通俗移动的语言,让初学者也能理解。本文会分步骤推导,涵盖 JOIN 的原理、实现方式、关键代码逻辑以及优化机制,同时确保逻辑清晰、内容全面。最后…...
国产Excel处理控件Spire.XLS系列教程:C# 将Excel文件转换为Markdown格式
Microsoft Excel 是一款强大的数据管理工具,广泛用于数据处理和分析。然而,其专有格式(如 XLS 和 XLSX)在不同平台之间共享时,常常面临兼容性问题。相比之下,Markdown 是一种轻量级的标记语言,因…...
C++线程库
1. 基本概念 1.1 线程(Thread) 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以并发多个线程,每条线程并行执行不同的任务。 1.2 并发与并行 并发(Concurren…...
Missashe计网复习笔记(随时更新)
Missashe计算机网络复习笔记 前言:这篇笔记用于博主对计网这门课所学进行记录和总结,也包括一些个人的理解。正在更新当中…… 第一章 计算机网络体系结构 考纲内容 (一) 计算机网络概述 计算机网络的概念、组成与功能;计算机网络的分类; 计算机网络…...
解决osx-arm64平台上conda默认源没有提供 python=3.7 的官方编译版本的问题
CONDA_SUBDIRosx-64 conda create -n py37_env python3.7 是一个用于创建特定架构环境的命令,主要针对 macOS 系统。下面为你详细解析它的功能和作用: 命令功能解析 这个命令的主要功能是创建一个名为 py37_env 的 Conda 环境,并且指定该环…...
Cjson格式解析与接入AI大模型
JSON格式的解析与构造 基本概念 JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程语言。 JSON 是一种轻量级的数据交换格式,采用完全独立于编程语言的…...
RocketMQ 深度解析:架构设计与最佳实践
在分布式系统架构日益复杂的今天,消息中间件作为系统间通信的桥梁,扮演着至关重要的角色。RocketMQ 作为阿里开源的高性能分布式消息中间件,凭借其卓越的性能、丰富的功能以及高可用性,在电商、金融、互联网等众多领域得到广泛应用…...
【Light】帕多瓦大学超表面技术:开启矢量光束相位偏振定制新时代
01 前言 近年来,完美涡旋光束(Perfect Vortex Beams)因其独特的环形强度分布和与拓扑电荷无关的特性,成为研究热点。然而,传统方法在生成此类光束时面临相位和偏振控制的挑战,通常需要复杂的光学系统或多重…...
2021-11-15 C++下一个生日天数
缘由c今日日期到生日天数-编程语言-CSDN问答 int isLeap(int year)//判断闰年 {//缘由https://ask.csdn.net/questions/7567048?spm1005.2025.3001.5141return ((!(year % 4) && year % 100) || !(year % 400)); } int daysInMonth(int year, int month)//返回月天数…...
基于nodejs + Koa +Nuxt3的订单系统项目实战
以下是一个基于 Node.js Koa Nuxt3 的订单系统项目实战指南,包含关键实现步骤和代码示例: 一、项目架构设计 project/ ├── backend/ # Koa 后端 │ ├── config/ # 配置文件 │ ├── controllers/ # 控制器 │ ├──…...
# YOLOv2:目标检测的升级之作
YOLOv2:目标检测的升级之作 在目标检测领域,YOLO(You Only Look Once)系列算法以其高效的速度和创新的检测方式受到了广泛关注。今天,我们就来深入探讨一下 YOLOv2,看看它是如何在继承 YOLOv1 的基础上进行…...
国债收益率、需求与抛售行为的逻辑解析
国债收益率、需求与抛售行为的逻辑解析 1. 国债收益率的定义 国债收益率是衡量国债投资回报的核心指标,分为两种常见计算方式: 当前收益率(Current Yield):年利息收入 债券当前市场价格 例如:面值100元、…...
使用Python和TensorFlow实现图像分类的人工智能应用
最近研学过程中发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...
嵌入式培训之C语言学习完(十七)结构体、共用体、枚举、typedef关键字与位运算
目录 一、结构体(struct关键字) (一)声明一个结构体数据类型 (二)结构体的成员初始化与赋值 a、结构体变量赋值 b、结构体成员初始化 c、结构体的定义形式 (三)考点ÿ…...
cilium路由模式和aws-eni模式下的IPAM
来看Cilium路由的几种核心模式。 封装模式(overlay) 首先是最基础的封装模式。这是默认情况下,如果你没有特别配置,Cilium会自动运行的模式。它的最大特点就是对底层网络环境的要求非常低,可以说是开箱即用。具体怎么…...
深入理解 Java 代理模式:从基础到实战
在软件开发的世界里,设计模式是程序员智慧的结晶,它们为解决常见问题提供了经过验证的最佳实践。代理模式作为一种常用的结构型设计模式,在 Java 开发中有着广泛的应用。本文将深入探讨 Java 代理模式,从基本概念、分类、实现原理…...
Python毕业设计219—基于python+Django+vue的房屋租赁系统(源代码+数据库+万字论文)
毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于pythonDjangovue的房屋租赁系统(源代码数据库万字论文)219 一、系统介绍 本项目前后端分离,分为租客、房东、管理员三种角色 1、租客: 注册、登录、公…...
Spring Boot 框架概述
1. 简介 Spring Boot 是由 Pivotal 团队开发的一个用于简化 Spring 应用开发的框架。它通过提供默认配置、嵌入式服务器和自动配置等特性,让开发者能够更快速地构建独立的、生产级别的 Spring 应用。 Spring Boot 的主要特点包括: 快速创建独立的 Spri…...
MySQL 8.0(主从复制)
MySQL 8.0 的 主从复制(Master-Slave Replication) 是一种数据库高可用和数据备份的核心技术,下面用 一、什么是主从复制? 就像公司的「领导-秘书」分工: 主库(Master):负责处理所…...
探索大型语言模型的 LLM 安全风险和 OWASP 十大漏洞
大型语言模型 (LLM) 引领着技术进步,推动着包括医疗保健在内的各个领域的自动化进程。在 Halodoc,我们通过 AI 驱动技术的运用直接见证了这一变化。然而,强大的功能伴随着同样重大的责任——保障这些系统的安全对于保护敏感信息和维护信任至关重要。本博客探讨了与 LLM 相关…...
算法与数据结构 - 二叉树结构入门
目录 1. 普通二叉树结构 1.1. 常见术语 1.2. 完全二叉树 (Complete Binary Tree) 1.3. 满二叉树 (Full Binary Tree) 2. 特殊二叉树结构 2.1. 二叉搜索树 (BST) 2.1.1. BST 基本操作 - 查找 2.1.2. BST 基本操作 - 插入 2.1.3. BST 基本操作 - 删除 2.2. 平衡二叉树…...
基于AQS实现Reentrantlcok
好久没有更新了 这次来补充上一次AQS还没有实现的可重入锁部分! 我们知道ReentrantLock是可重入的锁,主要的核心是state,他是一个原子性的整数,我们只需要将获取锁的代码boolean由false到true变成0->1即可完成。在完成删除逻辑…...
TiDB预研-分页查询、连接查询、执行计划
目录 分页查询原理连接查询原理查询计划分析 https://docs.pingcap.com/zh/tidb/stable/dev-guide-join-tables/ https://cn.pingcap.com/blog/tidb-query-optimization-and-tuning-1/ https://github.com/pingcap/blog-cn/blob/master/how-to-use-tidb.md 分页查询 深分…...
五、【LLaMA-Factory实战】模型部署与监控:从实验室到生产的全链路实践
【LLaMA-Factory实战】模型部署与监控:从实验室到生产的全链路实践 一、引言 在大模型应用落地过程中,从实验室研究到生产环境部署存在巨大挑战。本文基于LLaMA-Factory框架,详细介绍大模型部署与监控的完整流程,包含推理优化、…...
Unity 点击按钮,打开 Windows 文件选择框,并加载图片
代码如下: using System; using System.Collections; using System.Runtime.InteropServices; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.UI;/// <summary> /// 文件日志类 /// </summary> // […...
深入解析磁盘 I/O 与零拷贝技术:从传统读取到高效传输
深入解析磁盘 I/O 与零拷贝技术:从传统读取到高效传输 在现代计算机系统中,磁盘 I/O 操作是数据处理的核心环节之一。无论是读取文件、写入数据,还是进行网络传输,磁盘 I/O 的效率直接影响到系统的整体性能。本文将深入探讨磁盘 I…...
第十六章,网络型攻击防范技术
网络攻击介绍 网络攻击 --- 指的是入侵或破坏网络上的服务器 ( 主机 ) ,盗取服务器的敏感数据或占用网络带宽。 网络攻击分类: 流量型攻击 网络层攻击 应用层攻击 单包攻击 畸形报文攻击 --- 向目标主机发送有缺陷的IP报文,使得目标在…...