Nginx 核心功能笔记

目录

[一、Nginx 简介](#一、Nginx 简介)

二、核心功能详解

三、关键指令解析

四、性能优化要点

五、常见应用场景



一、Nginx 简介

  1. 定位
    • 高性能的 HTTP/ 反向代理服务器,同时支持邮件协议代理(IMAP/POP3/SMTP)。
    • 采用 事件驱动、异步非阻塞 架构,支持高并发(单机可处理数万到百万级并发连接)。
    • 内存占用低,配置文件简洁,模块化设计。
  2. 核心优势
    • 轻量级:相比 Apache,资源消耗更低。
    • 高扩展性:通过模块化设计支持动态扩展功能。
    • 热部署:支持不停止服务更新配置、升级版本。

二、核心功能详解

1. 静态资源服务器(Web Server)

  • 功能:直接托管 HTML、CSS、JS、图片等静态文件。
  • 配置示例

server {

listen 80;

server_name example.com;

root /var/www/html; # 静态文件根目录

location / {

index index.html;

}

# 压缩优化

gzip on;

gzip_types text/plain application/json text/css;

}

2. 反向代理(Reverse Proxy)

  • 功能:将客户端请求转发到后端服务器,隐藏真实服务端信息。
  • 典型场景:负载均衡、安全隔离、SSL 终止。
  • 配置示例

server {

listen 80;

server_name api.example.com;

location / {

proxy_pass http://backend_servers; # 转发到后端服务器组

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

}

3. 负载均衡(Load Balancing)

  • 支持算法
    • round-robin(默认,轮询)
    • least_conn(最小连接数)
    • ip_hash(基于客户端 IP 哈希分配)
    • weight(权重分配)
  • 配置示例

upstream backend_servers {

ip_hash; # 会话保持

server 192.168.1.101:8080 weight=3;

server 192.168.1.102:8080;

server 192.168.1.103:8080 backup; # 备用服务器

}

4. SSL/TLS 终止

  • 功能:处理 HTTPS 加密通信,减轻后端服务器压力。
  • 配置示例

server {

listen 443 ssl;

server_name secure.example.com;

ssl_certificate /etc/nginx/ssl/server.crt;

ssl_certificate_key /etc/nginx/ssl/server.key;

ssl_protocols TLSv1.2 TLSv1.3;

location / {

proxy_pass http://backend_servers;

}

}

5. 动静分离

  • 功能:将动态请求(如 PHP、Java)和静态资源(如图片、CSS)分开处理。
  • 配置示例

server {

location /static/ {

alias /data/static/; # 静态资源目录

expires 30d; # 缓存控制

}

location / {

proxy_pass http://app_server; # 动态请求转发

}

}

6. 虚拟主机(Virtual Host)

  • 功能:单机托管多个域名/网站。
  • 配置示例

server {

listen 80;

server_name site1.com;

root /var/www/site1;

}

server {

listen 80;

server_name site2.com;

root /var/www/site2;

}

7. 访问控制

  • 功能:基于 IP、用户认证限制访问。
  • 配置示例

location /admin/ {

allow 192.168.1.0/24; # 允许特定 IP 段

deny all; # 拒绝其他 IP

auth_basic "Restricted";

auth_basic_user_file /etc/nginx/.htpasswd; # 用户认证

}

8. 日志管理

  • 功能:记录访问日志和错误日志。
  • 配置示例

http {

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;

error_log /var/log/nginx/error.log warn;

}

9. 缓存加速

  • 功能:缓存后端响应,减少重复请求。
  • 配置示例

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;

server {

location / {

proxy_cache my_cache;

proxy_pass http://backend;

proxy_cache_valid 200 302 10m; # 缓存有效时间

}

}

10. 热部署与平滑重启

  • 热部署

nginx -s reload # 重新加载配置(不中断服务)

  • 版本升级
    替换二进制文件后通过 kill -USR2 <master_pid> 实现无缝升级。

三、关键指令解析

  • worker_processes:设置工作进程数(通常等于 CPU 核心数)。
  • events { worker_connections 1024; }:单个工作进程的最大连接数。
  • keepalive_timeout:长连接超时时间。
  • client_max_body_size:限制客户端请求体大小(如文件上传)。

四、性能优化要点

  1. 启用 Gzip 压缩:减少传输数据量。
  2. 调整缓冲区:避免频繁磁盘 I/O。
  3. 使用 HTTP/2:提升多请求并发效率。
  4. 限制并发连接:防止资源耗尽(如 limit_conn 模块)。

五、常见应用场景

  1. Web 服务器(替代 Apache)
  2. API 网关
  3. CDN 边缘节点
  4. 微服务入口(Kubernetes Ingress)
  5. 安全防护层(如限制 DDoS 攻击)
相关推荐
小草cys9 分钟前
[零基础]内网ubuntu映射到云服务器上,http访问(frp内网穿透)
运维·服务器
YIBO040837 分钟前
WSL2下Docker desktop的Cadvisor容器监控
运维·docker·容器·wsl·wsl2
一眼青苔1 小时前
如何知道Ubuntu的端口是否被占用,被那个进程占用?如何终止进程
linux·运维·ubuntu
冼紫菜1 小时前
[特殊字符] Docker 从入门到实战:全流程教程 + 项目部署指南(含镜像加速)
运维·分布式·后端·docker·云原生·容器
珊瑚里的鱼2 小时前
第一讲 | 算法复杂度
c语言·开发语言·数据结构·笔记·算法·visualstudio·visual studio
枫叶20002 小时前
OceanBase数据库-学习笔记5-用户
数据库·笔记·学习·oceanbase
OSwich2 小时前
【虚幻C++笔记】碰撞检测
c++·笔记·虚幻
程序员JerrySUN3 小时前
驱动开发硬核特训 · Day 25 (附加篇):从设备树到驱动——深入理解Linux时钟子系统的实战链路
linux·运维·驱动开发
破刺不会编程3 小时前
系统的环境变量
linux·运维·服务器·windows