nginx--基础--3.14--案例--访问限制

nginx–基础–3.14–案例–访问限制1、环境准备重启nginx usrlocalnginxsbinnginx -s reload -c usrlocalnginxconfnginx.confps -ef |

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信