当前位置: 首页 > news >正文

13.2.2.Nginx

13.2.2.1.定义

         Nginx 是一个轻量级且高性能的 Web 服务器,适用于处理高并发、低资源消耗的应用场景。它广泛用于 Web 服务器、反向代理、负载均衡、SSL/TLS 终止代理等场景,能够满足现代 Web 服务的多种需求。由于其模块化和高度可配置性,Nginx 被许多大流量网站(如 NetflixWordPressGitHub 等)广泛使用。

13.2.2.2.Nginx的架构设计

         1)事件驱动架构

                  Nginx 默认使用 epollkqueue select I/O 模型来处理事件。通过配置 worker_processes worker_connections 来管理系统资源。

worker_processes  auto;  # 根据CPU核心数自动设置

worker_connections  1024;  # 每个worker进程最大并发连接数

         2)多进程模型

         Nginx 采用多进程架构,主进程负责管理工作进程。工作进程处理客户端请求。

pid /var/run/nginx.pid;  # 指定pid文件

worker_processes  auto;  # 设置工作进程数

13.2.2.3.Nginx 的主要功能与技术体系

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

         Nginx 默认可以提供静态资源服务,只需要在配置文件中指定静态资源的路径。

server {

    listen 80;

    server_name www.example.com;

    location / {

        root /usr/share/nginx/html;  # 指定静态文件的路径

        index index.html index.htm;  # 默认页面

    }

}

         2)反向代理

         Nginx 可以充当反向代理服务器,将客户端请求转发到后端服务器。

server {

    listen 80;

    server_name www.example.com;

    location / {

        proxy_pass http://127.0.0.1:8080;  # 将请求转发到本地的 8080 端口

        proxy_set_header Host $host;  # 保持原始的请求头

        proxy_set_header X-Real-IP $remote_addr;  # 将客户端的真实 IP 传递给后端

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

         3)负载均衡

         Nginx 可以根据不同的策略进行负载均衡,常见的策略有轮询(默认)、最少连接、IP 哈希等。

http {

    upstream backend {

        server backend1.example.com;

        server backend2.example.com;

        # 负载均衡方式:轮询(默认)、最少连接、IP 哈希

        # 例如使用加权轮询

        server backend3.example.com weight=3;

    }

    server {

        location / {

            proxy_pass http://backend;

        }

    }

}

         4)缓存(反向代理缓存)

         Nginx 可以缓存从后端获取的数据,减少后端压力,提升响应速度。

http {

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=one:10m inactive=60m max_size=1g;

    server {

        location / {

            proxy_cache one;  # 启用缓存

            proxy_cache_valid 200 1h;  # 200 状态码的响应缓存 1 小时

            proxy_cache_use_stale error timeout updating;  # 使用过期的缓存响应

            proxy_pass http://backend;

        }

    }

}

         5SSL 加密(HTTPS 支持)

         Nginx 可以配置 SSL/TLS,支持 HTTPS 加密通信。

server {

    listen 443 ssl;

    server_name www.example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;

    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {

        root /usr/share/nginx/html;

        index index.html;

    }

}

         6)身份验证

         Nginx 支持基本的 HTTP 身份验证,可以通过配置 auth_basic auth_basic_user_file 来启用。

server {

    listen 80;

    server_name www.example.com;

    location /private/ {

        auth_basic "Restricted Area";

        auth_basic_user_file /etc/nginx/.htpasswd;  # 存储用户名和密码的文件

    }

}

13.2.2.4.安全性

         1)防止 DDoS 攻击(限制连接)

         Nginx 支持对请求进行限制,防止 DDoS 攻击。常见的做法是限制每秒的请求次数。

http {

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;  # 每个 IP 限制 1 请求每秒

    server {

        location / {

            limit_req zone=one burst=5 nodelay;  # 设置突发请求数和不延迟处理

            proxy_pass http://backend;

        }

    }

}

         2)访问控制

         通过 deny allow 指令来限制 IP 的访问。

server {

    listen 80;

    server_name www.example.com;

    location / {

        allow 192.168.1.0/24;  # 允许来自指定子网的访问

        deny all;  # 其他所有请求都拒绝

    }

}

13.2.2.5.日志管理

         1)访问日志

         Nginx 支持记录详细的访问日志,可以记录请求的来源、状态码、请求路径等信息。

server {

    listen 80;

    server_name www.example.com;

    access_log /var/log/nginx/access.log combined;

}

         2)错误日志

         Nginx 支持记录错误日志,可以配置日志的级别(如 infoerror 等)。

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

13.2.2.6.高可用性与容错

         1)健康检查

         Nginx 通过第三方模块(如 ngx_http_upstream_check_module)进行后端健康检查。也可以使用外部工具(如 Keepalived)实现高可用性和故障转移。

upstream backend {

    server backend1.example.com;

    server backend2.example.com;

    check interval=3000 rise=2 fall=5 timeout=1000;  # 后端健康检查

}

         2)自动故障转移

         当一个服务器不可用时,Nginx 会自动将请求转发到其他健康的服务器。

13.2.2.7.动态配置与热更新

         Nginx 允许在不重启服务器的情况下修改配置并应用新设置。通过重新加载配置文件,Nginx 会在不中断服务的情况下应用新的配置。

nginx -s reload  # 重新加载 Nginx 配置

13.2.2.8.性能优化

         1GZIP 压缩

         Nginx 支持 GZIP 压缩,减少传输的数据量,提高网页加载速度。

http {

    gzip on;  # 启用 GZIP 压缩

    gzip_types text/plain text/css application/javascript;

    gzip_min_length 1000;

}

         2)缓存优化

         通过配置适当的缓存时间和缓存路径,提高静态内容的缓存效果,减少文件读取时间。

location / {

    expires 30d;  # 缓存 30

    add_header Cache-Control public;

http://www.dtcms.com/a/561025.html

相关文章:

  • java后端学习经验分享(大三进大厂版)
  • 好用的镜像源
  • 做网站的经验有什么好的加盟店项目
  • linux-shell-基础与变量和运算符-1
  • 论文解读:Sleeping with One Eye Open: Fast, Sustainable Storage with Sandman
  • 手机客户端网站建设腾讯云服务器免费领取
  • Gorm(十三)主从表的判断
  • 从零开始的云原生之旅(十):HPA 完全指南:从原理到实践
  • 注册网站费属于什么费用模板公司
  • MYSQL-多种方法安装部署
  • 做网站要学哪些代码上海资本公司排名
  • 认识多线程:单例模式
  • 深入解析 HarmonyOS 中 NavDestination 导航目标页的生命周期
  • 3、webgl 基本概念 + 绘制线段 + 绘制三角形
  • 【LeetCode热题100(58/100)】单词搜索
  • 旅行社网站模版网页设计六安模板
  • 求解器驱动智能决策新纪元
  • 简单网站制作成品广东省广州市佛山市
  • 使用 TransGPTex 将 LaTeX 英文论文翻译成中文:完整实战教程
  • APIJSON:用JSON自动生成API,告别手写CRUD!【.NET 8 集成案例,也支持JAVA】
  • 网络版本计算器
  • 视频容器(如 MP4)的作用:组织与同步
  • 餐饮加盟网网站建设网站建设案例新闻
  • 梅州站改造高铁站优化方案英语必修三电子版
  • vue 项目中常用的 2 个 Ajax 库
  • 【NX 8.5】【vs2022】二开环境配置
  • HexStrike使用搭建
  • 历史数据分析——云南铜业
  • 金昌市住房和城乡建设局网站兴平网站开发
  • 使用Docker构建Node.js应用的详细指南