nginx–基础–3.14–案例–访问限制
1、环境准备
重启nginx
/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf
ps -ef | grep nginx
1.1、html界面
# 创建index.html
cat > /usr/local/nginx/html/index.html << EOF
<!DOCTYPE html>
<html>
<body>
<h1>test to nginx!</h1>
</body>
</html>
EOF
1.2、配置文件
vim /usr/local/nginx/conf/nginx.conf
内容
user root;
# 允许生成worker process数等。
worker_processes auto;
# 错误日志存放路径
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# 错误日志存放路径
pid logs/nginx.pid;
# 一个nginx进程最多可以打开文件数,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
worker_rlimit_nofile 65535;
events {
# 选取哪种事件驱动模型处理连接请求
use epoll;
# 每个进程的最大连接数
worker_connections 65535;
}
http {
# 文件扩展名与文件类型映射表
include mime.types;
# 默认文件类型,默认为text/plain
default_type application/octet-stream;
# 定义日志格式,main是日志格式名称
# 时间戳|请求端 IP|客户端 IP|HOST|整体响应时间|后端响应时间|"HTTP 方法 请求地址 HTTP协议版本"|响应码|响应体大小|请求体大小|"跳转来源"|"客户端信息"|后端地址|Trace ID| Span ID|Parent Span ID
log_format main '$time_iso8601|$http_x_forwarded_for|$remote_addr|$host|$request_time|$upstream_response_time|'
'"$request"|$status|$body_bytes_sent|$content_length|"$http_referer"|'
'"$http_user_agent"|$upstream_addr|$http_x_b3_traceid|$http_x_b3_spanid|$http_x_b3_parentspanid';
access_log logs/access_http.log main;
# 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
# on:可以减少内核和用户空间之间的数据拷贝次数,从而显著提高文件传输的效率,特别是在处理大文件或高并发的文件传输时。
sendfile on;
# 必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)
tcp_nopush on;
# 连接超时时间,默认为75s,可以在http,server,location块。
keepalive_timeout 65;
# 将要传输的数据压缩。降低数据传输的时间。
gzip on;
# geo是引入白名单,并设置出了白名单之外的默认值是0
geo $remote_addr $ip_white {
default 0;
# 白名单
include ip_white.ip;
}
server {
listen 80;
server_name localhost;
root html;
# 访问限制规则
include access-limite.conf;
location / {
root html;
index index.html;
}
}
}
2、访问限制
2.1、新增配置
ip_white.ip
vi /usr/local/nginx/conf/ip_white.ip
内容
192.168.112.181 1;
28.210.307.126 1;
192.168.187.1 1;
access-limite.conf
vi /usr/local/nginx/conf/access-limite.conf
内容
# 访问限制的配置文件
# 如果规则满足以下其中1项,就不返回403
# user-agent 包含 Peace
# user-agent 包含 Waltz
# user-agent 包含 sk=123
# IP在白名单中
# 是否403,1是0否,默认1
set $is403 1;
# user-agent 包含场景
if ($http_user_agent ~* (Peace|Waltz|sk=123)) {
set $is403 0;
}
# IP在白名单中
if ($ip_white = 1) {
set $is403 0;
}
if ($is403 = 1) {
return 403;
}
2.2、测试
测试的user-agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Peace=111
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Waltz=222
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Waltz=222,Peace=111
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 sk=123
只有请求都不满足以下条件的时候,才会返回403
# 如果规则满足以下其中1项,就不返回403
# user-agent 包含 Peace
# user-agent 包含 Waltz
# user-agent 包含 sk=123
# IP在白名单中
3、扩展:修改浏览器的UserAgent
3.1、下载User-Agent Switcher and Manage
https://www.crxsoso/webstore/detail/bhchdcejhohfmigjafbampogmaanbfkg
3.2、安装
访问浏览器,将User-Agent Switcher and Manager 0.6.2.crx
拖拽到当前页面
chrome://extensions/
3.3、配置
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/133.0.0.0 Safari/537.36 sk=123
3.4、其他参考资料
https://blog.csdn/simon4055/article/details/130503817
发布者:admin,转转请注明出处:http://www.yc00.com/web/1754671459a5187992.html
评论列表(0条)