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 攻击)
相关推荐
j_xxx404_9 分钟前
Linux:进程控制(创建/终止/等待/获取退出信息/多进程)
linux·运维·服务器
舟舟亢亢20 分钟前
JVM复习笔记(上)
jvm·笔记
BUG_MeDe23 分钟前
LINUX MTU/MSS(1500 1460等)的一些理解
linux·运维·服务器
曹牧24 分钟前
Nginx:正向代理与反向代理
运维·nginx
Ha_To25 分钟前
2026.1.30 搭建docker仓库
运维·docker·容器
lpfasd12327 分钟前
Docker Desktop 在国内使用的囧境:镜像拉取失败、加速器失效与破局之道
运维·docker·容器
江湖有缘32 分钟前
Docker部署SurveyKing调查问卷系统和考试系统
运维·docker·容器
超级大只老咪9 小时前
快速进制转换
笔记·算法
小小管写大大码10 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
zhang1338308907510 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化