使用aapanel面板+ARM处理器控制nginx流量配额方法
本文最后更新于 2024-07-16,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
环境 Arm
Nginx版本 Nginx openresty-1.25.3.1(Arm推荐安装openresty)
aapanel版本 7.0.5
使用存储:minio
Nginx端配置文件(nginx.conf)
user www www;
worker_processes auto;
error_log /www/wwwlogs/nginx_error.log crit;
pid /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events {
use epoll;
worker_connections 51200;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
# Nginx proxy configuration
include proxy.conf;
# Server settings
server_names_hash_bucket_size 512;
client_header_buffer_size 64k;
large_client_header_buffers 4 32k;
client_max_body_size 15360m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
# FastCGI settings
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
# Gzip settings
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/json image/jpeg image/gif image/png font/ttf font/otf image/svg+xml application/xml+rss text/x-js;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
# Limiting concurrent connections per IP and server
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_conn_zone $server_name zone=perserver:10m;
# Map to check if client exceeded download limit
map $binary_remote_addr $limit_rate_adjusted {
default "";
~^(\d+\.\d+\.\d+\.\d+)$ $binary_remote_addr;
};
# Track download stats in shared memory
limit_req_zone $binary_remote_addr zone=download_limit:10m rate=1r/s;
limit_req_status 429;
# Lua shared dictionary for download statistics
lua_shared_dict download_stats 10m;
# Server tokens and access log
server_tokens off;
access_log off;
# Include additional virtual host configurations
include /www/server/panel/vhost/nginx/*.conf;
}
默认不动,配置后重载服务
Server端配置文件(xxx.com.conf)
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 你的minio域名;
ssl_certificate /www/server/panel/vhost/cert/你的minio域名/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/你的minio域名/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
# Increase maximum upload size to 10GB
client_max_body_size 10G;
# Limit concurrent connections per IP address
limit_conn conn_limit_per_ip 1;
location / {
# Limit download speed to 2048 KB/s from the start
limit_rate 2048k;
# Limit rate after 10240MB downloaded (10737418240 bytes)
limit_rate_after 10737418240;
# Apply download rate limit if exceeded
if ($limit_rate_adjusted) {
limit_rate $limit_rate_adjusted;
}
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;
proxy_pass https://localhost:你的minio端口;
proxy_ssl_verify off; # If using self-signed certificates
}
error_page 497 https://$host$request_uri;
access_log /var/log/nginx/你的minio域名_access.log;
error_log /var/log/nginx/你的minio域名_error.log;
}
修改你的minio端口号和域名信息
实现功能
limit_rate_after
设置为10240MB,即10GB,您需要将其转换为字节并在Nginx配置中使用。
将大小转换为字节:
- 10240MB = 10240 * 1024 * 1024 = 10737418240 字节
这样配置就会限制客户端在下载超过10240MB后的速率。
在Nginx中,limit_rate_after
指令的值必须是一个有效的字节大小。通常情况下,Nginx不支持直接使用单位(如G、M、K)来表示大小,而是需要使用以字节为单位的具体数值。这可能导致配置文件中的错误,因为Nginx不能正确解析指令的值。
配置说明:
limit_req_zone
指令:- 使用
limit_req_zone
指令创建一个名为download_limit
的限速区域,以$binary_remote_addr
为键,每秒限速为 1r/s,用于跟踪每个 IP 地址的下载请求。
- 使用
limit_rate_after
指令:limit_rate_after 10737418240;
设置全局下载量限制为 10GB。limit_rate_after $limit_rate_adjusted 0;
根据$limit_rate_adjusted
变量来动态调整下载量限制,对于匹配的 IP 地址,下载量为 0,即超过限制后启用速率限制。
if ($limit_rate_adjusted)
条件:- 如果
$limit_rate_adjusted
变量为真(即客户端 IP 地址超过了限制),则应用动态调整的下载速率限制。
- 如果
- 其他配置:
- 保留了 SSL 配置、错误页面、访问日志等。
这种方式能够在每个 IP 地址达到设定的下载量(10GB)后,启用动态调整的速率限制,并在24小时后重置该限制。请根据实际情况测试和调整适合您的需求的参数和逻辑。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果