nginx进行token验证

本文讲述了在面临大量图片加载导致速度慢的问题时,如何利用OpenResty结合lua在nginx层面进行token验证优化。通过在OpenResty中进行Redis token校验和缓存,减少了对后端服务的压力,同时介绍了遇到的问题与解决方案。
摘要由CSDN通过智能技术生成

前言

最近在做图片服务的时候,一开始用的tomcat,图片的url后面拼接上token,在tomcat里进行token验证后再把二进制流返回给前台。不过,我们项目中有一个页面,在进去的时候,会一次性加载1000张左右的图片,等图片加载完,花都谢了。

不过也不能把后台校验去了,所以就有了在nginx上做token验证的想法,同事说可以开发脚本,随后就有了接下来的故事。

OpenResty

OpenResty就是我需要用到的集成了nginx和lua开发环境的框架,该框架甚至集成了redis连接包等,里面的东西很多,具体的可以看这篇文章:OpenResty 最佳实践,本篇文章只说具体实现。另外高喊一句,lua牛批。

不过在搭建lua的开发环境的时候,可能是因为我是Windows系统,所以环境没能安装成功, 不过我按照Idea+lua 开发环境搭建(一)文章里说的,成功运行lua。虽然。。。我搭好lua环境后,只是用来练习语法和部分标准库了,nginx的开发没用上。。。

它的一生

第一版中,我只是在里面通过Redis做了token校验,只要请求过来,就会先去Redis里面判断一下是否有这个token,如果有的话就返回图片。不过返回图片卡住了好久,按照《OpenResty 最佳实践》中说的,我返回图片流给页面,页面并不能看到图片。于是我决定利用子查询来做,将该请求转到nginx中的另一个location下。

第二版加入了token缓存,在缓存中存储接收到的token,等下一个请求来时,先去缓存中看有没有,如果没有的话就去redis中查一下。虽然这么设置了,图片还是没有达到想要的速度,只能跟前端的大哥商量,说能不能让图片懒加载,一次请求1000个真的有点搞。。。

最后应用的代码

nginx.conf: 应用了


#user  nobody;
worker_processes  2;

error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
	# 声明创建缓存
	lua_shared_dict my_cache 64m;

    #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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        charset UTF-8;

        # access_log  logs/host.access.log info;

        location ^~ /images/ {
			
			content_by_lua_file l
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值