ubuntu

Ubuntu LNMP如何实现流量控制

小樊
45
2025-11-24 13:52:31
栏目: 智能运维

Ubuntu LNMP流量控制实战

一、控制维度与适用场景

二、Nginx层限流配置示例

http {
    # 每个 server_name 的并发连接数(示例上限 100)
    limit_conn_zone $server_name zone=perserver:10m;
    # 每个客户端 IP 的并发连接数(示例上限 10)
    limit_conn_zone $binary_remote_addr zone=peraddr:10m;
    # 每个客户端 IP 的请求速率(示例 5 请求/秒,突发 10,不延迟处理突发)
    limit_req_zone $binary_remote_addr zone=perreq:10m rate=5r/s;

    server {
        listen 80;
        server_name example.com;

        # 对整站应用速率与并发限制
        limit_req zone=perreq burst=10 nodelay;
        limit_conn peraddr 10;
        limit_conn perserver 100;

        # 对下载目录按 IP 限速(示例 200 KB/s)
        location /download/ {
            alias /var/www/download/;
            limit_conn peraddr 5;              # 下载并发更严
            limit_rate 200k;                   # 带宽限速
            limit_rate_after 1m;               # 先放行 1MB 再限速(可选)
        }

        # 对 PHP 动态请求单独限流(示例 3 请求/秒,突发 5)
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass 127.0.0.1:9000;     # 或 unix:/run/php/phpX.Y-fpm.sock
            limit_req zone=perreq burst=5 nodelay;
        }
    }
}

三、生效与验证

sudo nginx -t
sudo systemctl reload nginx

四、边界与系统层补充

sudo apt update && sudo apt install -y ufw
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from <你的IP> to any port 22
sudo ufw enable
sudo ufw status
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

# /etc/sysctl.conf(按需调整)
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1

五、进阶与排错建议

0
看了该问题的人还看了