博客
关于我
Nginx学习总结(13)——Nginx 重要知识点回顾
阅读量:793 次
发布时间:2023-02-15

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

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 的配置与优化

服务器配置

# 用户设置,默认为 nobodyuser nobody;# 允许生成的进程数,默认为 1worker_processes 4;# 每个进程分配一个 CPUworker_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 能够在高并发、负载均衡、静态资源服务等场景中表现出色,是每个开发者的理想选择。

转载地址:http://qecfk.baihongyu.com/

你可能感兴趣的文章
neo4j图形数据库Java应用
查看>>
Neo4j安装部署及使用
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(2):环境搭建
查看>>
Neo4j(4):Neo4j - CQL使用
查看>>
Neo私链
查看>>
NervanaGPU 项目使用教程
查看>>
Nerves 项目教程
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
查看>>
nestesd exception is java .lang.NoSuchMethodError:com.goolge.common.collect
查看>>
nestJS学习
查看>>
net core 环境部署的坑
查看>>
NET Framework安装失败的麻烦
查看>>
Net 应用程序如何在32位操作系统下申请超过2G的内存
查看>>
Net.Framework概述
查看>>
NET3.0+中使软件发出声音[整理篇]<转>
查看>>