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 攻击)
相关推荐
小张同学a.22 分钟前
OpenStack 私有云实战 2—— Glance 镜像与 Nova 计算服务搭建
linux·运维·服务器·openstack
浔溺36 分钟前
al+大数据每日学习笔记28
笔记·学习
陈让然1 小时前
VS Code C/C++ 插件 cpptools 内存占用异常
linux·运维
FakeOccupational2 小时前
【github 有趣项目】OpenPLC: 支持通用硬件的开源 PLC 软件平台‌
笔记
qq_316411038 小时前
商用冷柜售后报修运维管理系统开发案例
运维
xian_wwq8 小时前
【学习笔记】-深度认知系列-第2讲-大模型到底是什么?——拆解“参数、训练、推理”
笔记·学习·深度认知
智码看视界8 小时前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
码视野10 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
qq_4260039610 小时前
【UI自动化测试】UI自动化报错解决方案
运维·ui·自动化
网安蟹佬霸10 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安