Nginx学习总结(13)——Nginx 重要知识点回顾
发布日期:2025-04-20 15:30:19 浏览次数:4 分类:精选文章

本文共 2740 字,大约阅读时间需要 9 分钟。

Nginx 详解:从基础到高级配置

Nginx 的由来

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,由俄罗斯工程师 Igor Sysoev 开发。它最初于 2002 年发布,旨在解决 Apache 在高并发环境下的性能问题。与 Apache 等传统服务器不同,Nginx 采用事件驱动架构,能够处理数百万级别的 TCP 连接,性能显著优于传统服务器。

Nginx 的成功源于其开源性质和高度模块化设计。支持第三方模块扩展,且跨平台运行,能够在 Linux、Windows、FreeBSD 等操作系统上运行。这些特点使其成为现代 Web 服务的理想选择。

Nginx 的核心功能

Nginx 早期主要作为反向代理,但随着技术发展,功能逐渐扩展,成为一个多功能的 Web 服务器。其主要功能包括:

  • HTTP 和 HTTPS 服务器:支持静态文件发布,适合搭建个人或企业网站。
  • 反向代理:用于负载均衡、内容缓存、安全防护等场景。
  • 邮件代理(POP3/IMAP/SMTP):可作为邮件服务器,支持邮件接收和发送。
  • WebSocket 反向代理:支持实时通信,适合 WebSockets 应用。
  • 高性能负载均衡:支持多种调度算法,能够在复杂环境中实现高效资源分配。

Nginx 的配置与优化

服务器配置

# 用户设置,默认为 nobody
user nobody;
# 允许生成的进程数,默认为 1
worker_processes 4;
# 每个进程分配一个 CPU
worker_cpu_affinity 00000001 00000010 00000100 00001000;
# 最大文件描述符数
worker_rlimit_nofile 102400;

事件驱动设置

# 使用 epoll 模型(Linux 2.6+)
events {
accept_mutex on;
multi_accept on;
use epoll;
}

服务性能优化

# 最大连接数
worker_connections 102400;
# 连接超时
proxy_connect_timeout 5s;
proxy_read_timeout 60s;
proxy_send_timeout 5s;

缓存与压缩

# 启用 Gzip 压缩
gzip on;
gzip_min_length 1k;
gzip_comp_level 9; # 压缩级别(默认 1-9)
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/x-wasm;
# 缓冲区大小
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_temp_file_write_size 128k;

负载均衡配置

# 服务器集群配置
upstream mysvr {
server 192.168.5.91:7878 max_fails=2 fail_timeout=10s;
server 192.168.5.92:7878 max_fails=2 fail_timeout=10s;
weight 1 2;
}

服务器入口配置

# 监听地址和端口
listen 9080;
# 服务器名称
server_name localhost;
# 服务日志
access_log logs/access.log main;
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

Nginx 与其他 Web 服务器对比

对比项 Apache Nginx Lighttpd
代理支持 一般
重写支持 非常好 一般
CGI 支持 不好 非常好
热部署支持 不支持 支持 不支持
性能压力 较小
稳定性 非常好 不好
静态文件处理 一般 非常好
反向代理支持 一般 非常好 一般

Nginx 的实际应用场景

正向代理

  • 通过代理访问外部服务器,解决访问限制问题。
  • 加速资源访问,缓存内容。
  • 提供安全授权,隐藏用户信息。
  • 记录访问日志,管理上网行为。

反向代理

  • 分发请求到多台后端服务器,实现负载均衡。
  • 隐藏服务器信息,提高安全性。
  • 提供服务的内网访问入口。
  • 支持分布式部署,优化网站性能。

负载均衡调度算法

  • 轮询加权:默认调度算法,支持服务器权重设置。
  • IP 杂志:根据客户端 IP 分配请求,解决 session 共享问题。
  • 智能均衡:根据服务器响应时间动态分配请求。
  • URL 杂志:根据请求 URL 分配,适合静态资源服务。

Nginx 的高级配置与优化

动态配置模块

Nginx 支持第三方模块扩展,用户可以根据需求安装额外模块,例如:

  • Nginx Plus:提供商业版本,包含更多高级功能。
  • Nginx PP:优化性能,提升处理能力。
  • Nginx RTMP:支持实时多媒体流媒体。

Lua 应用

Nginx 提供 Lua 插件支持,用户可以编写 Lua 脚本处理复杂逻辑。例如:

location /lua/set {
default_type 'text/plain';
content_by_lua_file conf/lua/setKeyValue.lua;
}

WebSocket 支持

Nginx 提供 WebSocket 反向代理功能,用户可以配置 WebSocket 端点:

location /ws {
proxy_handshake on;
proxy_pass http://ws_backend;
proxy_set_header Upgrade WebSocket;
proxy_set_header Connection Upgrade;
}

结论

Nginx 凭借其高性能、稳定性和灵活性,成为现代 Web 服务的首选反向代理服务器。无论是小型项目还是大型企业应用,Nginx 都能满足多样化需求。通过合理配置和模块扩展,Nginx 能够在高并发、负载均衡、静态资源服务等场景中表现出色,是每个开发者的理想选择。

上一篇:Nginx学习总结(14)——Nginx配置参数详细说明与整理
下一篇:Nginx学习总结(12)——Nginx各项配置总结

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月30日 20时16分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

#C8# UVM中的factory机制 #S8.1.3# UVM实战代码再剖析 2023-01-23
#C8# UVM中的factory机制 #S8.1.4# 约束的重载 2023-01-23
#C8# UVM中的factory机制 #S8.2.2# 复杂重载方式 2023-01-24
#C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形 2023-01-24
#C8# UVM中的factory机制 #S8.4.1# factory机制的实现 2023-01-24
#C8# UVM中的factory机制 #S8.4.3# factory机制创建实例接口 2023-01-24
#C8# UVM中的factory机制 #S8.5# 对factory机制的重载进一步思考 2023-01-24
#Linux杂记# grep 查找命令常用选项大全(一) 2023-01-24
#Linux杂记# grep 查找命令常用选项大全(二) 2023-01-24
.exe已停止工作_windows资源管理器已停止工作怎么解决 2023-01-24
7 自动开启网卡_软件测试学习教程——CentOS 7 修改网卡设置 2023-01-24
8位二进制转bcd算法 c语言,二进制转BCD码快速算法 bin to bcd fast code. 2023-01-24
900行c语言贪吃蛇,原生js实现的贪吃蛇网页版游戏完整实例 2023-01-24
ado filter 多条记录_Excel 有了Filter函数VLOOKUP函数要靠边站了 2023-01-24
ado读取多条oracle数据,Oracle ADO数据存取 2023-01-24
anaconda新建python2环境安装不了jupyterlab_anaconda3安装及jupyter环境配置教程(全)... 2023-01-24
android asynctask handler 区别,AsyncTask与Thread+Handler简要分析 2023-01-24
android fastjson漏洞_初识Fastjson漏洞(环境搭建及漏洞复现) 2023-01-24
android pod 组件化_CocoaPods 组件化实践 - 私有Pod 2023-01-24
$CH0201$ 费解的开关 2023-01-24