Bootstrap

Nginx使用篇


Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛用于负载均衡、限流和动静分离等场景。以下是这些功能的具体实现和配置方法。

1. 负载均衡

Nginx 可以通过反向代理实现负载均衡,将客户端请求分发到多个后端服务器上,以提高系统的可用性和性能。

配置示例:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
        }
    }
}

负载均衡策略:

  • 轮询(默认):按顺序将请求分发到每个服务器。
  • 权重(weight):根据服务器权重进行分发。
  • IP 哈希(ip_hash):根据客户端 IP 地址分发请求,同一个 IP 的请求总是分配到同一个后端服务器。
  • 最少连接(least_conn):将请求分发到当前活动连接最少的服务器。

示例:

upstream backend {
    server backend1.example.com weight=3;
    server backend2.example.com;
    server backend3.example.com;
}

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

2. 限流

Nginx 可以通过限流模块(ngx_http_limit_req_module)来限制客户端请求的速率,从而保护服务器免受过载攻击。

配置示例:

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

    server {
        listen 80;

        location / {
            limit_req zone=mylimit burst=20 nodelay;
            proxy_pass http://backend;
        }
    }
}

参数说明:

  • limit_req_zone:定义限流区域,其中 $binary_remote_addr 是客户端 IP 地址,mylimit 是区域名称,10m 是共享内存大小,rate=10r/s 表示每秒最多处理 10 个请求。
  • limit_req:应用限流区域,burst=20 允许的突发请求数, nodelay 表示超过限速的请求立即返回错误而不是排队。

3. 动静分离

动静分离是指将动态请求和静态请求分开处理,以提高网站的性能。静态资源(如图片、CSS、JS 文件)可以直接由 Nginx 处理,动态请求(如 PHP、Python、Java 等)则代理到后端应用服务器。

配置示例:

server {
    listen 80;

    location / {
        proxy_pass http://backend;
    }

    location ~* \.(jpg|jpeg|png|gif|css|js|ico|html)$ {
        root /var/www/static;
        expires 30d;
    }
}

参数说明:

  • location /:匹配所有请求,并将其代理到后端服务器。
  • *location ~ .(jpg|jpeg|png|gif|css|js|ico|html)$**:匹配静态资源文件,并直接由 Nginx 处理。root 指定静态资源的根目录,expires 设置浏览器缓存过期时间。

总结

Nginx 作为一个高性能的反向代理服务器,能够通过负载均衡、限流和动静分离等功能,显著提高网站的性能和可靠性。其配置灵活且高效,适用于各种规模的 web 应用。

  • 负载均衡:通过反向代理和多种负载均衡策略,将请求分发到多个后端服务器。
  • 限流:通过限流模块限制客户端请求速率,保护服务器免受过载攻击。
  • 动静分离:将静态资源和动态请求分开处理,提高网站性能。

掌握这些配置和原理,可以有效优化 Nginx 的使用,提升 web 应用的整体表现。

;