Nginx基础知识
Nginx是什么?
Nginx 是一款高性能的 Web 服务器、反向代理服务器和负载均衡器,以其高并发处理能力和低内存消耗著称。以下是 Nginx 的基础知识和常见配置示例:
1. 核心概念
• 配置文件位置:通常为 /etc/nginx/nginx.conf
或 /usr/local/nginx/conf/nginx.conf
。
• 配置文件结构:
# 全局配置(影响整体运行)
user nginx;
worker_processes auto;# 事件模块配置(连接处理)
events {worker_connections 1024;
}# HTTP模块配置
http {# 服务器块(虚拟主机)server {listen 80;server_name example.com;# 具体路由规则location / {root /var/www/html;}}
}
2. 常见配置示例
示例 1:静态文件服务
server {listen 80;server_name example.com;# 根目录配置location / {root /var/www/html; # 静态文件存放路径index index.html; # 默认首页}# 处理 404 错误error_page 404 /404.html;location = /404.html {internal;}
}
示例 2:反向代理
将请求代理到后端应用(如 Node.js/Python 服务):
server {listen 80;server_name api.example.com;location / {proxy_pass http://localhost:3000; # 转发到本地的 3000 端口proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}
示例 3:负载均衡
使用 upstream
模块分配流量到多个后端服务器:
http {upstream backend {server 192.168.1.100:8080; # 后端服务器 1server 192.168.1.101:8080; # 后端服务器 2server 192.168.1.102:8080 backup; # 备用服务器}server {listen 80;server_name app.example.com;location / {proxy_pass http://backend;}}
}
3. 常用指令
• listen
:监听的端口(如 listen 80;
)。
• server_name
:域名或 IP(如 server_name example.com;
)。
• root
:静态文件根目录。
• location
:定义 URL 匹配规则(支持正则)。
• proxy_pass
:反向代理到指定地址。
• try_files
:按顺序尝试返回文件(如 try_files $uri $uri/ /index.html;
)。
4. 常用命令
- 检查配置语法:
nginx -t
- 重新加载配置(不重启服务):
nginx -s reload
- 启动/停止 Nginx:
systemctl start nginx # 启动 systemctl stop nginx # 停止
5. 典型应用场景
• 静态资源托管:快速响应 HTML/CSS/JS 文件。
• API 网关:反向代理到多个微服务。
• 负载均衡:分配流量到多台服务器。
• SSL 终结:通过配置 HTTPS 证书(如 Let’s Encrypt)。
通过灵活配置,Nginx 可以满足高并发、高可用性的 Web 服务需求。
Nginx 是适用场景
Nginx 是一个高性能的HTTP和反向代理服务器,同时也可以作为邮件代理服务器。它最初是为了解决高并发访问问题而设计的,具有占用内存小、并发能力强等特点。以下是 Nginx 的一些典型应用场景:
-
静态内容服务:Nginx 可以非常高效地提供静态文件(如HTML、图片、CSS和JavaScript)。它能够处理大量并发请求,使得它成为托管静态资源的理想选择。
-
反向代理服务器:Nginx 常用作反向代理服务器,用于将客户端请求转发给后端服务器,并将响应返回给客户端。这种方式可以隐藏实际处理请求的服务器,增加安全性。此外,还可以实现负载均衡,提高系统的可用性和扩展性。
-
负载均衡:Nginx 支持多种负载均衡算法(如轮询、最少连接、IP哈希等),可以将请求分发到多个后台服务器上,从而提高应用的响应速度和可用性,尤其是在分布式系统中。
-
虚拟主机:通过 Nginx 可以很方便地配置基于名称或基于IP的虚拟主机,允许在同一台物理服务器上托管多个不同的域名网站。
-
SSL/TLS 终结:Nginx 能够充当SSL/TLS终结点,这意味着它可以处理加密的HTTPS请求,解密它们并将未加密的请求发送到后端服务器。这减少了后端服务器的负载,提高了性能。
-
缓存加速:Nginx 可以配置为缓存后端服务器的响应结果,减少重复请求对后端服务器的压力,提高响应速度。
-
微服务架构中的API网关:在微服务架构中,Nginx 可以用作API网关,提供诸如认证、限流、日志记录等功能,帮助管理不同服务之间的通信。
-
WebSocket 代理:Nginx 支持 WebSocket 协议,可以用来代理 WebSocket 连接,支持长连接的应用场景。
总之,Nginx 凭借其灵活性和高性能,在现代网络架构中有广泛的应用,无论是小型网站还是大型企业级应用,都可以看到它的身影。
Nginx和Apache的区别
Apache 和 Nginx 是两个流行的开源Web服务器软件,它们在设计、性能和应用场景上都有所不同。以下是它们之间的一些主要区别:
设计架构
- Apache 使用进程驱动的方法,并为每个请求创建一个新线程或进程(取决于使用的MPM,即多处理模块)。这可能导致在高并发情况下资源消耗较大。
- Nginx 使用事件驱动的体系结构来处理一个线程中的多个请求。这种方式使其能够更有效地处理大量并发连接,尤其是在资源受限的环境中。
并发处理
- Apache 在处理大量并发请求时可能会遇到瓶颈,因为每个连接都需要一个独立的线程或进程,随着并发连接数增加,内存使用量也会线性增长。
- Nginx 能够在一个工作进程中异步、非阻塞地处理数千个并发连接,因此其内存使用更加高效,适合高流量网站。
静态与动态内容
- 静态内容:Nginx 在提供静态内容方面表现优异,通常比 Apache 更快且占用更少的系统资源。
- 动态内容:Apache 可以直接处理动态内容(如通过 mod_php),而 Nginx 通常需要将 PHP 请求传递给外部处理器(如 PHP-FPM)。
配置系统
- Apache 支持分布式配置,允许通过 .htaccess 文件在目录级别进行配置,这对共享主机环境非常有用,但可能会影响性能。
- Nginx 使用集中式配置,不支持 .htaccess 文件,这可以提高性能,因为服务器不需要检查每个目录下的配置文件。
模块系统
- Apache 的模块可以在运行时动态加载,这意味着你可以在不停止服务器的情况下添加或移除功能。
- Nginx 的大多数模块必须在编译时加入,尽管也有一些第三方模块可以通过插件形式动态加载。
应用场景
- Apache 更适合复杂的动态网站,特别是那些需要特定功能模块的应用程序。
- Nginx 更加适用于高并发环境和需要高性能静态内容服务的场合,也常被用作反向代理、负载均衡器和HTTP缓存。
性能对比
- 在相同硬件条件下,Nginx 对于高并发连接通常表现得更好,特别是在处理静态内容时效率极高。
- Apache 在处理动态内容时可能与 Nginx 相当,但它的资源消耗会随着并发连接数的增长而增加。
选择哪一个 Web 服务器应该基于具体的需求、技术栈以及团队对相应技术的熟悉程度。对于某些情况,结合两者的优势(例如使用 Nginx 作为前端代理服务器,Apache 处理后端动态内容)可能是最佳实践。
相关文章:

Nginx基础知识
Nginx是什么? Nginx 是一款高性能的 Web 服务器、反向代理服务器和负载均衡器,以其高并发处理能力和低内存消耗著称。以下是 Nginx 的基础知识和常见配置示例: 1. 核心概念 • 配置文件位置:通常为 /etc/nginx/nginx.conf 或 /us…...

Vue-监听属性
监听属性 简单监听 点击切换名字,来回变更Tom/Jerry,输出 你好,Tom/Jerry 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>监听属性</title><!-- …...

python fastapi + react, 写一个图片 app
1. 起因, 目的: 上厕所的时候,想用手机查看电脑上的图片,但是又不想点击下载。此app 应运而生。 2. 先看效果 单击图片,能放大图片 3. 过程: 过程很枯燥。有时候, 有一堆新的想法。 但是做起来太麻烦,…...
nginx集成防火墙ngx_waf的docker版
由于公网的环境越来与严峻,所以想找一个nginx带防火墙的版本 调研过openresty,大部分集成redis了,感觉还是太重了,有一个不那么重的https://github.com/unixhot/waf 但是维护没有那么勤,最后维护是5年前,倒…...

vscode c++编译onnxruntime cuda 出现的问题
问题描述 将onnx的dll文件和lib文件copy到可执行文件所在文件夹下后,现象: 双击可执行文件能正常运行 在vscode中点击cmake插件的运行按钮出现报错为 c [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 “” when trying to load尝试…...
sts下载安装
windows下STS(Spring Tools Suite,自带spring插件的eclipse)的下载与安装_sts下载-CSDN博客Spring Boot安装与配置教程_spring boot安装配置-CSDN博客...

中服云生产线自动化智能化调度生产系统:打造智能制造新标杆
前言 在当今制造业竞争日益激烈的背景下,实现生产线的自动化与智能化已成为企业提升竞争力的关键。作为国内技术领先的工业物联网平台、数字孪生、自动控制技术厂商,中服云凭借其深厚的技术积累和创新能力,打造了一套完整的生产线自动化智能…...
next.js实现项目搭建
一、创建 Next.js 项目的步骤 1、安装 npx create-next-applatest # 或 yarn create next-app # 或 pnpm create next-app 按照交互式提示配置你的项目: 输入项目名称 选择是否使用 TypeScript 选择是否启用 ESLint 选择是否启用 Tailwind CSS 选择是否使用 s…...
Redisson 四大核心机制实现原理详解
一、可重入锁(Reentrant Lock) 可重入锁是什么? 通俗定义 可重入锁类似于一把“智能锁”,它能识别当前的锁持有者是否是当前线程: 如果是,则允许线程重复获取锁(重入),并…...

云鼎入鼎系统:一站式电商管理解决方案
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱个人微信&a…...

Leetcode134加油站
题目链接 134 题意图解: 题目给了n个节点,这些节点呈现环状,每次到一个低点要消耗cost[i]的油量。 从中我们可以得出一个结论:看一个点能不能到下一个点,就要用当前的油量减去消耗的量,那么gas[i] - cost…...

关于Android Studio for Platform的使用记录
文章目录 简单介绍如何使用配置导入aosp工程配置文件asfp-config.json 简单介绍 Android Studio for Platform是google最新开发,用来阅读aosp源码的工具 详细的资料介绍: https://developer.android.google.cn/studio/platform 将工具下载下来直接点击…...
Linux的内存泄漏问题及排查方法
内存泄漏是指在计算机程序中,已不再被使用的内存未被正确释放,导致内存占用随时间累积,进而引发系统内存不足、性能下降甚至崩溃的问题。在Linux系统中,开发者和运维人员可通过以下方法排查和解决内存泄漏问题: 1. 使…...

uniapp 微信小程序 获取openId
嗨,我是小路。今天主要和大家分享的主题是“uniapp 微信小程序 获取openId”。 一、主要属性 1.uni.login 二、实例代码 1、前端代码 uni.login({provider: weixin,success: (res) > {uni.showLoading({title: 登录中...,mask: true})let code res.…...

隧道结构安全在线监测系统解决方案
一、方案背景 隧道是地下隐蔽工程,会受到潜在、无法预知的地质因素影响。随着我国公路交通建设的发展,隧道占新建公路里程的比例越来越大。隧道属于线状工程,有的规模较大,可长达几公里或数十公里,往往穿越许多不同环境…...

Docker 运维管理
Docker 运维管理 一、Swarm集群管理1.1 Swarm的核心概念1.1.1 集群1.1.2 节点1.1.3 服务和任务1.1.4 负载均衡 1.2 Swarm安装准备工作创建集群添加工作节点到集群发布服务到集群扩展一个或多个服务从集群中删除服务ssh免密登录 二、Docker Compose与 Swarm 一起使用 Compose 三…...
【Redis】快速列表结构
目录 1、背景2、压缩列表【1】底层结构【2】特性【3】优缺点 1、背景 redis的quicklist(快速列表)是一个双向链表,其中每个节点都是一个ziplist(压缩列表)。这中结构结合了双向链表和压缩列表的优点,在内存…...
阿里巴巴 1688 数据接口开发指南:构建自动化商品详情采集系统
在电商行业数据驱动决策的趋势下,高效获取商品详情数据成为企业洞察市场、优化运营的关键。通过阿里巴巴 1688 数据接口构建自动化商品详情采集系统,能够快速、精准地采集海量商品信息。本文将从开发准备、接口分析、代码实现等方面,详细介绍…...

[SpringBoot]Spring MVC(2.0)
紧接上文,这篇我们继续讲剩下的HTTp请求 传递JSON数据 简单来说:JSON就是⼀种数据格式,有⾃⼰的格式和语法,使⽤⽂本表⽰⼀个对象或数组的信息,因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换 JSON的语法 1. 数据在 键值对(Key/Value) …...

Golang的网络安全策略实践
Golang的网络安全策略实践 一、理解网络安全的重要性 当今的网络环境中,安全问题日益突出,各种类型的攻击如雨后春笋般涌现,给个人和组织的信息资产造成了严重威胁。因此,制定和实施有效的网络安全策略至关重要。 二、Golang在网络…...

STM32外设AD-轮询法读取模板
STM32外设AD-轮询法读取模板 一,什么是轮询?1,轮询法的直观理解2,轮询法缺点 二,CubeMX配置三,模板移植1,adc_app.c文件2,变量声明1,adc_app.c中2,mydefine.h…...
C++编程this指针练习
这段代码是用 C 编写的,定义了一个 Car 类(类是 C 中用于创建对象的蓝图),并通过 main() 函数创建和使用了该类的对象。下面是对整个程序的逐行解释,并在关键部分加上注释说明。 ✅ 代码整体功能: 定义一个…...

iOS音视频解封装分析
首先是进行解封装的简单的配置 /// 解封装配置 class KFDemuxerConfig {// 媒体资源var asset: AVAsset?// 解封装类型,指定是音频、视频或两者都需要var demuxerType: KFMediaType .avinit() {} }然后是实现解封装控制器 import Foundation import CoreMedia i…...

突破智能驾舱边界,Imagination如何构建高安全GPU+AI融合计算架构
日前,“第十二届汽车电子创新大会暨汽车芯片产业生态发展论坛(AEIF 2025)”在上海顺利举办。大会围绕汽车前沿性、关键性和颠覆性技术突破,邀请行业众多专家学者,分享与探讨了汽车电子产业的技术热点与发展趋势。在5月…...

DeepSeek 如何实现 128K 上下文窗口?
DeepSeek 如何实现 128K 上下文窗口?长文本处理技术揭秘 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 DeepSeek 如何实现 128K 上下文窗口?长文本处理技术揭秘摘要引言技术架构解析1. 动态…...
云计算简介:从“水电”到“数字引擎”的技术革命
云计算简介:从“水电”到“数字引擎”的技术革命 在当今数字化浪潮中,云计算早已从一个技术概念演变为支撑现代社会运转的核心基础设施。无论是你手机里的天气预报、电商购物的推荐系统,还是企业内部的ERP系统,背后都离不开云计算…...
计算圆周率 (python)
使用模特卡罗方法(模拟法),模拟撒点100000次,计算圆周率π 输入格式: 一个整数,表示随机数种子 输出格式: 计算的π值,结果小数点后保留5位数字 输入样例: 在这里给出一组输入。例如: 10…...

Python 实现图片浏览和选择工具
实现将截图预览,并按照顺序加入一个pdf文件中,实现照片管理尤其对于喜欢看教程截图做笔记的网友们。 C:\pythoncode\new\python-image-pdf-processor.py 界面展示 🧱 一、核心结构概述 主类 ImageViewer(wx.Frame) 是主窗口类,…...

Python实现的在线词典学习工具
Python实现的在线词典学习工具 源码最初来自网络,根据实际情况进行了修改。 主要功能: 单词查询 通过Bing词典在线获取单词释义(正则提取网页meta描述),支持回车键快速查询 内置网络请求重试和异常处理机制 在线网页…...
ES常识9:如何实现同义词映射(搜索)
在 Elasticsearch(ES)中实现同义词映射(如“美丽”和“漂亮”),核心是通过 同义词过滤器(Synonym Token Filter) 在分词阶段将同义词扩展或替换为统一词项,从而让搜索时输入任意一个…...