当前位置: 首页 > news >正文

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. 常用命令

  1. 检查配置语法:
    nginx -t
    
  2. 重新加载配置(不重启服务):
    nginx -s reload
    
  3. 启动/停止 Nginx:
    systemctl start nginx   # 启动
    systemctl stop nginx    # 停止
    

5. 典型应用场景
• 静态资源托管:快速响应 HTML/CSS/JS 文件。

• API 网关:反向代理到多个微服务。

• 负载均衡:分配流量到多台服务器。

• SSL 终结:通过配置 HTTPS 证书(如 Let’s Encrypt)。

通过灵活配置,Nginx 可以满足高并发、高可用性的 Web 服务需求。

在这里插入图片描述

Nginx 是适用场景

Nginx 是一个高性能的HTTP和反向代理服务器,同时也可以作为邮件代理服务器。它最初是为了解决高并发访问问题而设计的,具有占用内存小、并发能力强等特点。以下是 Nginx 的一些典型应用场景:

  1. 静态内容服务:Nginx 可以非常高效地提供静态文件(如HTML、图片、CSS和JavaScript)。它能够处理大量并发请求,使得它成为托管静态资源的理想选择。

  2. 反向代理服务器:Nginx 常用作反向代理服务器,用于将客户端请求转发给后端服务器,并将响应返回给客户端。这种方式可以隐藏实际处理请求的服务器,增加安全性。此外,还可以实现负载均衡,提高系统的可用性和扩展性。

  3. 负载均衡:Nginx 支持多种负载均衡算法(如轮询、最少连接、IP哈希等),可以将请求分发到多个后台服务器上,从而提高应用的响应速度和可用性,尤其是在分布式系统中。

  4. 虚拟主机:通过 Nginx 可以很方便地配置基于名称或基于IP的虚拟主机,允许在同一台物理服务器上托管多个不同的域名网站。

  5. SSL/TLS 终结:Nginx 能够充当SSL/TLS终结点,这意味着它可以处理加密的HTTPS请求,解密它们并将未加密的请求发送到后端服务器。这减少了后端服务器的负载,提高了性能。

  6. 缓存加速:Nginx 可以配置为缓存后端服务器的响应结果,减少重复请求对后端服务器的压力,提高响应速度。

  7. 微服务架构中的API网关:在微服务架构中,Nginx 可以用作API网关,提供诸如认证、限流、日志记录等功能,帮助管理不同服务之间的通信。

  8. 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 处理后端动态内容)可能是最佳实践。

相关文章:

  • java基础-关键字:static、单例模式
  • QPS与TPS区分及压测指标解读
  • 渗透测试核心技术:漏洞挖掘与利用
  • ai agent(智能体)开发 python高级应用8:crawl4ai 对用 LLMExtractionStrategy 和 python的 re 如何选择
  • 存储地图上的各种形状的文件格式.SHP文件介绍
  • python学习day2(未写完,明天继续补充)
  • AI大模型:技术演进、核心原理与产业解析
  • AutoMouser - 单次AI调用铸就高效自动化脚本
  • Xshell实战:远程连接VMware CentOS7虚拟机与高效运维指南——从零配置到自动化操作,解锁Xshell的核心价值
  • 湖北理元理律师事务所观察:债务服务中的“倾听者价值”
  • 系统架构设计-案例分析总结
  • 人工智能、机器学习与深度学习:全面介绍与对比分析
  • 【Unity 2023 新版InputSystem系统】新版InputSystem 如何进行人物移动(包括配置、代码详细实现过程)
  • Financing | 巴菲特查理芒格投资理念
  • Windows环境安装LibreOffice实现word转pdf
  • 设备数据看板助力自动化工厂实现生产智能精细化管理
  • 通用简洁工作汇报项目评估营销策划工作总结年终汇报PPT模版8套一组分享
  • VAPO:视觉-语言对齐预训练(对象级语义)详解
  • Visual Studio构建三剑客:生成/重新生成/清理解决方案的正确打开方式
  • 项目记录:「五秒反应挑战」小游戏的开发全过程
  • 以色列媒体:以总理称将接管整个加沙
  • 泽连斯基与美国副总统及国务卿会谈,讨论伊斯坦布尔谈判等问题
  • 中国田径巡回赛西安站完赛:男子跳远石雨豪夺冠,女子跳高刘肼毅折桂
  • 新华每日电讯:博物馆正以可亲可近替代“高冷范儿”
  • 淮安市车桥中学党总支书记王习元逝世,终年51岁
  • 美国将与阿联酋合作建立海外最大的人工智能数据中心