目录
一、概述
二、实现
三、Nginx的限速
3.1 并发限制
3.2 速度限制
Nginx系列之 一 入门安装_开着拖拉机回家的博客-CSDN博客
Nginx系列之 一 反向代理_开着拖拉机回家的博客-CSDN博客
Nginx系列之 一 负载均衡_开着拖拉机回家的博客-CSDN博客
一、概述
Nginx一个高性能 Web服务器,可以用作反向代理,也可以实现负载平衡和 HTTP缓存。Nginx是一款免费的开源软件,根据类BSD许可证的条款发布。大部分 Web服务器通常使用 NGINX 作为负载均衡器。
需求: 项目私有化部署HDP集群和应用程序,Linux服务器不能直接上传和下载文件,同一个局域网中在windows上面安装Nginx,使用nginx搭建一个简单的文件共享服务器,使用wget进行大文件下载。
二、实现
配置Nginx
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host '
'$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;
keepalive_timeout 65;
server {
listen 80;
server_name www.kangll.com;
# 避免中文乱码
charset utf-8;
location / {
alias /opt/softs/;
sendfile on;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
}
参数详解:
- sendfile
启用sendfile()系统调用来替换read()和write()调用,减少系统上下文切换从而提高性能,当 nginx 是静态文件服务器时,能极大提高nginx的性能表现,而当 nginx 是反向代理服务器时,则没什么用了
- autoindex on
启用目录浏览虚拟主机的配置文件
- autoindex_exact_size off
默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
- autoindex_localtime on
默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
通过 www.kangll.com 访问
在 其他的 Linux服务器上 下载
三、Nginx的限速
3.1 并发限制
可以通过ngx_http_limit_conn_module和ngx_http_limit_req_module模块来实现限速的功能, 该模块主要限制下载速度。
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host '
'$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;
keepalive_timeout 65;
limit_conn_zone $binary_remote_addr zone=aming:10m;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name www.kangll.com;
limit_conn aming 10;
location / {
alias /opt/softs/;
sendfile on;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
}
说明:首先用limit_conn_zone定义了一个内存区块索引aming,大小为10m,它以$binary_remote_addr作为key。该配置只能在http里面配置,不支持在server里配置。
limit_conn 定义针对aming这个zone,并发连接为10个。在这需要注意一下,这个10指的是单个IP的并发最多为10个。
limit_conn 为 10 ,下载文件:
limit_conn 修改为 5 ,下载速度降下来一点
3.2 速度限制
nginx_http_limit-req_module: 该模块用来限制请求数。
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host '
'$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;
keepalive_timeout 65;
limit_conn_zone $binary_remote_addr zone=aming:10m;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name www.kangll.com;
limit_conn aming 5;
location / {
alias /opt/softs/;
sendfile on;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
limit_rate_after 30m;
limit_rate 1024k;
}
}
}
说明:limit_rate_after定义当一个文件下载到指定大小(本例中为30M)之后开始限速;
limit_rate 定义下载速度为1024k/s。
测试: