nginx学习

nginx

脚本化

一键安装脚本

set -e # 后续命令执行错误直接退出脚本
#!/bin/bash  # 指定默认使用的解释器

1. 
# 下载nginx源码安装包
mkdir /nginx  # 新建目录存放nginx项目文件
cd /nginx
curl -O https://nginx.org/download/nginx-1.26.3.tar.gz

tar -xzf nginx-1.26.3.tar.gz
cd nginx-1.26.3
2. 
# 安装需要的依赖软件包
yum -y install zlib zlib-devel openssl openssl-devel pcre \
pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim  wget -y

3. 
# 编译前的配置工作(选择开启的功能)
#编译前的配置工作
./configure  **--prefix=/usr/local/nginx1**  --user=chenjian  --group=chenjian  \
 --with-threads  --with-http_v2_module    --with-http_stub_status_module  \
    --with-http_ssl_module     --with-stream  \
      --with-http_gunzip_module
# --prefix 指定nginx的工作目录      

4. 
# 启动两个进程进行编译,将C语言代码编译成二进制程序
make -j 2
# 编译安装
make install

# 修改环境变量
echo 'PATH=/usr/local/nginx1/sbin/:$PATH'  >> /etc/bashrc
# source /etc/bashrc  重新加载环境变量,新进程中使用(不同进程)

# 启动nginx
nginx

一键卸载nginx服务

1. 停止nginx服务
		nginx -s stop 
2. 删除PATH中相关路径

3. 删除nginx的工作目录
	1. 使用find查看nginx的相关目录
	find / -name "*nginx*"
	
4. 删除/etc/rc.local里的开机启动

nginx热升级

Nginx 热升级详解_nginx升级-优快云博客

1. 备份旧的nginx二进制文件
	/usr/local/nginx/sbin
	[root@sc sbin]# ls
	nginx  nginx.old
2. 编译新版本的nginx二进制文件
	1.curl下载tar.gz包
	2. tar xzf 解压
	3. 进入目录编译(自定义配置)
3. 替换旧的二进制文件
4. 通知老的nginx master进程启动新的nginx master进程(新旧并存)
	kill -12 [pid]   # 通知旧进程加载新的进程
	此时可以进行测试回滚,如果新的进程存在问题需要回滚
	kill -1 [old pid]
	kill -3 [new pid]
5. 退出老的master进程
	kill -3 [old pid]   # 优雅退出

编辑nginx配置参数configure

# 1. 基础配置参数
		--prefix=PATH:指定 Nginx 的安装目录,默认是/usr/local/nginx。
		--sbin-path=PATH:设定 Nginx 可执行文件的安装路径,默认是prefix/sbin/nginx。
		--conf-path=PATH:指定 Nginx 配置文件的路径,默认是prefix/conf/nginx.conf。

# 2. HTTP 核心模块
		--with-http_ssl_module:启用 HTTPS 支持
		--with-http_v2_module:启用 HTTP/2 支持
					# HTTP/2 具备更快的传输速度和更好的性能,能显著提升网站的响应速度。
		--with-http_gzip_static_module:开启静态文件 gzip 压缩功能。

主配置文件(nginx.conf)

主配置文件结构

Nginx 配置文件采用模块化结构,由多个 上下文(Context) 组成,每个上下文用大括号 {} 包围,包含特定功能的配置指令。主要上下文包括:

  • 全局块:配置影响 Nginx 全局的参数,如用户权限、工作进程数等。
  • events 块:配置网络连接相关的参数,如并发连接数、事件模型等。
  • http 块:配置 HTTP 服务器的全局参数,包含多个 server 块。
  • server 块:配置虚拟主机(网站),包含多个 location 块。
  • location 块:配置 URL 匹配规则请求处理方式。

全局块(main上下文)

# 运行 Nginx 进程的用户和用户组
user nginx;
# 工作进程数,通常设置为 CPU 核心数
worker_processes auto;
# 错误日志路径和级别
error_log /var/log/nginx/error.log warn;
# 进程 ID 存储文件
pid /var/run/nginx.pid;
# 包含其他配置文件
include /etc/nginx/modules-enabled/*.conf;

events块

events {
    # 每个工作进程允许的最大并发连接数
    worker_connections 1024;
    # 事件处理模型(epoll 是 Linux 下的高效模型)
    use epoll;
    # 允许一个工作进程同时接受多个新连接
    multi_accept on;
}

http块

http {
    # 文件扩展名与 MIME 类型的映射表
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    # 日志格式定义
    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;
    # 开启高效文件传输模式 不牵扯用户模式向内核模式切换
    sendfile on;
    # 防止网络小包的频繁发送
    tcp_nopush on;
    # 减少页面加载时间
    tcp_nodelay on;
    # 保持长连接的超时时间
    keepalive_timeout 65;
    # 开启 gzip 压缩,减少在网络中传输数据的次数
    gzip on;
    gzip_types text/plain text/css application/json application/javascript;
    # 包含所有虚拟主机配置文件
    include /etc/nginx/conf.d/*.conf;
}

server块(虚拟主机配置)

server {
    # 监听的端口和 IP
    listen 80;
    server_name example.com www.example.com;  # 域名
    # 字符集设置
    charset utf-8;
    # 访问日志
    access_log /var/log/nginx/example.access.log;
    # 默认请求处理
    location / {
        root /var/www/example.com;  # 网站根目录
        index index.html index.htm;  # 默认首页文件
    }
    # 错误页面配置
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /var/www/error_pages;
    }
}

location 块(URL 匹配规则)

location匹配顺序

nginx有两层指令来匹配请求 URI 。第一个层次是 server 指令,它通过域名、ip 和端口来做第一层级匹配,当找到匹配的 server 后就进入此 server 的 location 匹配。

location 的匹配并不完全按照其在配置文件中出现的顺序来匹配,请求URI 会按如下规则进行匹配:

1. location =    # 精准匹配
2. location ^~   # 带参前缀匹配
3. location ~    # 正则匹配(区分大小写)
4. location ~*   # 正则匹配(不区分大小写)
5. location /a   # 普通前缀匹配,优先级低于带参数前缀匹配。
6. location /    # 任何没有匹配成功的,都会匹配这里处理
# 精确匹配 /favicon.ico
location = /favicon.ico {
    log_not_found off;  # 不记录找不到文件的日志
    access_log off;     # 关闭访问日志
}
# 匹配以 /static/ 开头的路径
location ^~ /static/ {
    root /var/www/assets;  # 实际文件路径为 /var/www/assets/static/
    expires 30d;           # 静态资源缓存 30 天
}
# 匹配 PHP 请求(通过 FastCGI 转发)
location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # PHP-FPM 套接字
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
# 重定向 HTTP 到 HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;  # 永久重定向
}

虚拟主机的类型

  1. 基于域名
  2. 基于IP
  3. 基于端口

nginx的使用

常用参数

nginx -t  # 检查nginx配置文件的语法
nginx -v  # 查看nginx的版本
nginx -V  # 查看nginx版本详细信息(编译信息)

启动相关

  1. reload 重新加载nginx配置文件,nginx程序不会退出,始终保持连接

    首先将新的work process加载,然后停掉旧的work实现更替

  2. restart 重启nginx程序,当nginx出现严重的错误时才会选择重启

    此时nginx创建的web服务将会断开

# 向nginx进程发送信号
nginx -s
# 发送reload信号,刷新nginx服务
nginx -s reload
# 发送restart信号 重启nginx
nginx -s restart
# 停止nginx服务进程
nginx -s stop
# 优雅停止nginx  - 主进程通知不再接受新的请求,待当前请求处理完成后关闭连接
nginx -s quit
  1. nginx开机启动(创建service文件,使用systemctl管理)

    (1) 编写nginx service配置文件

    sudo vim /etc/systemd/system.nginx.service
    
    # 添加以下内容
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/run/nginx.pid
    # Nginx 可执行文件路径(根据实际情况调整) 以及各种动作
    ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
    ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
    ExecReload=/usr/sbin/nginx -s reload
    ExecStop=/usr/sbin/nginx -s stop
    ExecQuit=/usr/sbin/nginx -s quit
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    (2) 重载systemd管理器配置并设置开机自启

    systemctl restart daemon-reload
    systemctl enable nginx
    

nginx日志

  1. access.log

    nginx的访问日志。记录了客户端对 Nginx 服务器的所有访问请求信息,包括请求的来源、主机IP时间、请求的资源、响应状态码等,

  2. error.log

    记录了 Nginx 服务器在运行过程中发生的错误信息,包括配置错误、连接问题、文件读取错误等。

**日志配置:**主配置文件 nginx.conf

http {
    # 访问日志配置
    access_log  /var/log/nginx/access.log  main;

    # 错误日志配置
    error_log  /var/log/nginx/error.log  error;
}

nginx的重要模块

nginx的作用

负载均衡/IO多路复用

IO多路复用实现

修改events中的worker_connections 1024;

events {
    use epoll;  # 显式指定使用 epoll
    worker_connections 1024;  # 每个工作进程支持的最大连接数
}

多路复用中的模型

1. select 模型

select 是最早的 IO 多路复用实现,兼容性好

轮询/线性扫描/数量限制(1024) 不适合处理大量连接

2. epoll 模型

epoll 是 Linux 2.6 内核引入的高效 IO 多路复用机制,专为处理大量连接优化。

状态统计

在server配置块中添加状态信息统计的功能

实质上是加一段路由

location =/ status {
    stub_status;
}

访问www.wang.com/status

Active connections: 2 
server accepts handled requests
 40 40 41 
Reading: 0 Writing: 1 Waiting: 1 

权限认证

httpd-tool 设置密码

yum provides htpasswd

yum install htpass-tools -y

# 创建新的密码文件并添加用户 (替换 username 为实际用户名)
htpasswd -c /etc/nginx/.htpasswd username

# 后续添加用户时省略 -c 参数
htpasswd /etc/nginx/.htpasswd anotheruser

添加至保护路由

  location /admin/ {
      auth_basic "sanchuang";  # 自定义提示信息
      auth_basic_user_file /etc/nginx/.htpasswd;
      proxy_pass http://backend;
  }

dey和allow

location / {
    deny all;
    allow 192.168.1.1;  # 允许单个 IP
    allow 10.0.0.0/8;   # 允许整个网段
}

nginx限速和限制并发连接

网站的带宽是有限的,可以对下载的时候的用户进行限制

限制带宽主要使用 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块,前者用于连接数限制,后者用于请求频率限制。对于带宽限制,主要使用limit_rate 和 limit_rate_after 指令。

  1. limit_rate 限制下载的速度(limit_rate 256k;

  2. limit_rate_after 当达到多少时开始限制下载(limit_rate_after 10m; # 前 10MB 不限制

  3. ngx_http_limit_conn_module 限制连接数

    http {
        limit_conn_zone $binary_remote_addr zone=per_ip:10m;
        limit_conn_zone $server_name zone=per_server:10m;
        
        server {
            listen 80;
            
            location / {
                # 每个 IP 最多 10 个连接
                limit_conn per_ip 10;
                # 整个服务器最多 1000 个连接
                limit_conn per_server 1000;
                
                # 连接速率限制(可选)
                limit_rate 100k;
            }
        }
    }
    

nginx限制请求数量

1. 基于漏桶算法的请求限制

使用 limit_req_zone 和 limit_req 指令实现:

http {
    # 定义一个名为 req_limit 的共享内存区域,基于客户端 IP 统计请求
    # 速率限制为每秒 10 个请求(burst=20 允许突发 20 个请求)
    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
    
    server {
        listen 80;
        
        location / {
            # 应用请求限制,突发请求会被延迟处理
            limit_req zone=req_limit burst=20;
            
            # 可选:超过突发限制的请求直接返回 503
            # limit_req zone=req_limit burst=20 nodelay;
        }
    }
}

负载均衡

负载均衡(Load Balancing)是一种将流量均匀分配到多个服务器的技术,通过将请求分发到多个后端服务器,能够提高应用的可用性、可靠性和处理能力。

Nginx 作为高性能的 Web 服务器和反向代理,提供了强大而灵活的负载均衡功能。

  1. 二层负载均衡(数据链路层)
  2. 三层负载均衡(网络层的路由器)
  3. 四层负载均衡(传输层的端口号) nginx支持
  4. 七层负载均衡(应用层的http协议实现) nginx支持
  5. DNS实现域名解析 - 负载均衡

调度算法

  1. 轮询 round-robin(绝对公平 默认)
  2. 最小连接数 least-connected 基于七层或者四层
  3. IP哈希 基于客户机的IP地址计算哈希值,如果哈希值相同则访问特定的服务器,适合于需要保持sessions一直的网站

基础负载均衡配置使用

  1. 定义后端服务器组(https同样,https可以负载到http服务上)

在 http 块中使用 upstream 指令定义后端服务器组:

http {
    # 定义名为 backend 的服务器组
    upstream backend {
        server backend1.example.com weight=5;  # 权重为 5
        server backend2.example.com weight=3;  # 权重为 3
        server backend3.example.com weight=2;  # 权重为 2
    }
    
    server {
        listen 80;
        server_name example.com;
        
        location / {
            proxy_pass http://backend;  # 1. 将请求转发到后端服务器组
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}
  1. 负载均衡算法选择

Nginx 支持多种负载均衡算法,通过不同指令配置:

upstream backend {
    # 轮询(默认)
    server backend1.example.com;
    server backend2.example.com;
    
    # 加权轮询
    server backend1.example.com weight=5;
    server backend2.example.com weight=3;
    
    # IP 哈希(会话保持)
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    
    # 最少连接
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
    
    # 基于响应时间(需要安装第三方模块)
    fair;
    server backend1.example.com;
    server backend2.example.com;
}

健康检测

负载均衡器检查后端真实的web服务器是否在运行网站

如果后端服务器全部挂掉了,nginx会报出502(bad Gateway)错误

  1. backup 备份服务器
  2. down 显示标识特定服务器不可用(后端服务器维护)
upstream backend {
    server backend1.example.com weight=5 max_fails=3 fail_timeout=30s;
    server backend2.example.com weight=3 backup;  # 备用服务器
    server backend3.example.com down;  # 暂时标记为不可用
}

虽然 Nginx 原生不提供健康检查,但可以通过以下方式实现:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    
    # 使用 nginx_upstream_check_module 模块(需要额外安装)
    check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    check_http_send "GET /health HTTP/1.1\r\nHost: $host\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
}

后端服务器无法获取真实客户端 IP

  1. 使用 X-Forwarded-For 请求头

    upstream backend {
        server backend1.example.com;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
    # X-Real-IP:记录客户端的真实 IP
    # X-Forwarded-For:记录请求经过的所有代理 IP,格式为 client_ip, proxy1_ip, proxy2_ip
    # X-Forwarded-Proto:记录客户端使用的协议(HTTP/HTTPS)
    
  2. 后端服务器解析真实IP(或者nginx服务器日志进行字段解析获得真实IP)

    from flask import request
    
    @app.route('/')
    def index():
        client_ip = request.headers.get('X-Real-IP') or request.remote_addr
        return f"Your IP: {client_ip}"
    

TCP/UDP四层负载均衡

基于 IP + 端口分发:负载均衡器根据客户端的 IP 地址和目标端口(如 80/TCP、443/TCP)将流量转发到后端服务器。

# 实现配置文件内容
worker_processes  4;
events {
        worker_connections 2048;
}

stream {
        upstream dns_servers {
                server 192.168.10.147:53;
        }

        upstream web_servers {
                server 192.168.71.148:80;
                server 192.168.71.149:80;
        }

        server {
                listen 80 ;
                proxy_pass web_servers;
        }

        server {
                listen 53 udp ;
                proxy_pass dns_servers;

        }
}

# 负载均衡配置文件示例:/etc/nginx/nginx.conf

stream {
    # 定义日志格式
    log_format proxy '$remote_addr [$time_local] '
                     '$protocol $status $bytes_sent $bytes_received '
                     '$session_time "$upstream_addr" '
                     '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
    
    # 定义访问日志
    access_log /var/log/nginx/stream_access.log proxy;
    
    # 开启 TCP 负载均衡
    upstream backend_tcp {
        # 配置后端服务器,可根据实际情况调整权重、健康检查等参数
        server backend1.example.com:8080 weight=5 max_fails=3 fail_timeout=30s;
        server backend2.example.com:8080 weight=3 max_fails=3 fail_timeout=30s;
        server backend3.example.com:8080 weight=2 max_fails=3 fail_timeout=30s;
        
        # 负载均衡算法,可选值:round_robin、least_conn、ip_hash 等
        least_conn;
    }
    
    # 配置 UDP 负载均衡(示例)
    upstream backend_udp {
        server backend1.example.com:53 weight=5;
        server backend2.example.com:53 weight=3;
        server backend3.example.com:53 weight=2;
    }
    
    # TCP 负载均衡监听配置
    server {
        listen 80;  # 监听的端口
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass backend_tcp;  # 指定上游服务器组
    }
    
    # UDP 负载均衡监听配置(示例)
    server {
        listen 53 udp;  # 监听的 UDP 端口
        proxy_responses 1;
        proxy_timeout 60s;
        proxy_pass backend_udp;
    }
}

压力测试

压力测试的工具

  1. ab(局域网也可以使用) apach
  2. 阿里云PTS(公网使用)

相关概念

  1. pv (page review) :页面浏览量

使用:

yum install httpd-tools -y

ab -n 1000 -c 100 http://example.com/
# -n 总请求数
# -c 并发请求数

Server Software:        nginx/1.26.3
Server Hostname:        192.168.71.248
Server Port:            80

Document Path:          /
Document Length:        620 bytes

Concurrency Level:      10
Time taken for tests:   0.506 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      853000 bytes
HTML transferred:       620000 bytes
Requests per second:    1977.86 [#/sec] (mean)
Time per request:       5.056 [ms] (mean)
Time per request:       0.506 [ms] (mean, across all concurrent requests)
Transfer rate:          1647.57 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.5      1       8
Processing:     2    4   1.3      3      14
Waiting:        2    3   1.3      3      14
Total:          3    5   1.5      5      15

Percentage of the requests served within a certain time (ms)
  50%      5
  66%      5
  75%      5
  80%      6
  90%      6
  95%      7
  98%      9
  99%     12
 100%     15 (longest request)

高可用

可以实现的软件

  1. Keepalived
  2. Heartbeat
  3. HAproxy

keeplived

功能

  1. 负载均衡

    底层通过lvs实现高可用性,调用内核里已经安装的lvs模块来实现负载均衡

    lvs的另外一个名字叫ipvs

  2. 高可用

    通过VRRP协议来实现

VRRP协议

虚拟路由器冗余协议(Virtual Router Redundancy Protocol,VRRP)是一种用于实现路由器冗余和高可用性的协议。

VRRP 将一组路由器组成一个虚拟路由器(VIP)。有一个主路由器(Master)和多个备份路由器(Backup

安装使用

  1. 安装keepalived

    yum install keepalived -y
    
  2. 查看配置文件 配置一台作为MASTER 一台作为BACKUP

    实现VIP漂移

    ! Configuration File for keepalived
    
    # 全局配置
    global_defs {
        router_id LVS_DEVEL  # 路由标识,需唯一
        script_user root     # 执行脚本的用户
        enable_script_security  # 启用脚本安全检查
    }
    
    # VRRP实例配置(实现高可用)
    vrrp_instance VI_1 {
        state MASTER          # 初始状态:MASTER或BACKUP
        interface eth0        # 绑定的网络接口
        virtual_router_id 51  # 虚拟路由ID,1-255之间
        priority 100          # 优先级,数值越高越优先
        advert_int 1          # VRRP通告间隔(秒)
        
        # 认证配置(可选)
        authentication {
            auth_type PASS    # 认证类型:PASS或AH
            auth_pass 1111    # 认证密码
        }
        
        # 虚拟IP地址配置
        virtual_ipaddress {
            192.168.1.100     # VIP地址
        }
        
        # 跟踪脚本(监控服务器健康状态)
        track_script {
            chk_http_port      # 引用下面定义的检查脚本
        }
    }
    
    # 健康检查脚本配置
    vrrp_script chk_http_port {
        script "/etc/keepalived/check_nginx.sh"  # 脚本路径
        interval 2                               # 检查间隔(秒)
        weight -20                              # 检查失败时优先级降低20
        fall 2                                   # 连续2次失败才认为服务器不可用
        rise 1                                   # 1次成功即认为服务器恢复
    }
    
    # 虚拟服务器配置(用于负载均衡)
    virtual_server 192.168.1.100 80 {
        delay_loop 6                # 健康检查间隔(秒)
        lb_algo rr                  # 负载均衡算法:rr(轮询)、wrr(加权轮询)等
        lb_kind DR                  # 负载均衡模式:NAT、DR、TUN
        persistence_timeout 50      # 会话保持时间(秒)
        protocol TCP                # 协议类型
        
        # 真实服务器配置
        real_server 192.168.1.101 80 {
            weight 10               # 权重值
            SSL_GET {
                url {
                  path /            # 检查的URL路径
                  digest ff20ad2481f8d0384d87a256d65ecf6  # 预期的MD5摘要
                }
                url {
                  path /mrtg/       # 另一个检查路径
                  digest 9b3a0c85a887217160d61c57ae16234
                }
                connect_timeout 3   # 连接超时时间(秒)
                retry 3             # 重试次数
                delay_before_retry 3 # 重试前的延迟时间(秒)
            }
        }
        
        # 可以添加多个real_server...
        real_server 192.168.1.102 80 {
            weight 10
            SSL_GET {
                # 类似的健康检查配置
            }
        }
    }
    

单双VIP

单VIP会导致其余负载均衡机器闲置

双VIP架构:通过在两个或多个服务器节点上配置两个虚拟 IP 地址(VIP) - 互为主备,来提供更可靠的服务和负载均衡能力。

脑裂问题

两台或者多台LB上面都有vip地址

原因:

  1. 设置了不同的虚拟id
  2. 防火墙挡住了VRRP组播报文的传输
  3. 认证密码不一样导致脑裂

网络安全攻击

dos攻击 - 拒绝服务攻击

特点:

  1. 攻击来自于单一设备或网络
  2. 攻击流量有限
  3. 可以通过防火墙进行防范

常见攻击类型

  1. SYN洪水攻击:发送大量伪造的SYN请求,耗尽服务器的连接资源
  2. ping洪水攻击:发送大量的ICMP请求,耗尽目标网络的带宽
  3. UDP

ddos攻击 - 分布式拒绝服务攻击

通过控制大量的僵尸计算机对目标主机发起攻击

特点:

  1. 攻击来自不同的机器,来源广泛
  2. 汇聚了多台机器的攻击,攻击规模大
  3. 攻击来源广泛,较难防范与追踪

防范

  1. 配置防火墙策略,将外部网络进来的网络隔离
  2. 购买对应的DDos防御服务商,帮助过滤攻击
  3. 增加集群数量,设置高可用和负载均衡策略

CC(Challenge Collapsar,挑战黑洞)攻击

是一种常见的网络攻击方式,属于 DDoS 攻击的一种变体。

通过控制大量的计算机(僵尸网络)模拟正常用户向目标服务器发送海量的 HTTP 请求,以消耗服务器的资源。

攻击特点:

  1. 隐蔽性强:通过伪造大量的http请求获取网页资源,模拟用户的行为,难以辨别
  2. 自动化攻击

防范:

  1. WAF(web应用防火墙) 部署在客户机和服务器之间
  2. 流量过滤
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值