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 攻击)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值