Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)

这篇具有很好参考价值的文章主要介绍了Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

1
同nginx配置server以后,我们可以很方便的直接访问到文件服务器上的文件资源,但是某些情况下,文件资源可能是隐私图片,比如客户注册时上传的身份证照片等等,这时候我们需要对图片访问进行控制,必须登录后才能查看到这些隐私图片。
2
一般来说,我们都是通过后端controller对权限进行控制,但是nginx作为图片服务器的情况下,再专门为此写一个后端程序显然比较笨重。所以根据实际情况,我们采用openresty平台,用lua脚本+redis读取token的方式即可完成对图片访问服务器的权限控制。

步骤

1.服务器文件目录设置

正常来说我们的文件存放目录是统一的,但是由于有些文件是开放访问的,比如网页图片,有的文件是隐私的,比如注册信息。所以此时我们将文件服务器目录修改为两个文件夹,public和private,public用以存放开发文件,private存放登陆后才可以访问的文件。

2.openresty下载

进入官网下载页:http://openresty.org/en/download.html

选择windows版本的压缩包进行下载
Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)
将压缩包解压到本地目录,openresty是nginx和lua的结合,此时我们编写lua脚本并修改nginx.conf,测试openresty。
在openresty目录下的lua文件夹下新建txt文件,

ngx.say('hello lua!!!')

然后重命名txt为hello.lua
如图所示
Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)
Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)
然后在penresty目录下的conf文件夹下,修改nginx.conf

	 server {
        listen       9000;
        server_name  localhost;
		
		location  / {

			default_type 'text/html';
			rewrite_by_lua_file  lua/hello.lua;
		}
		
	}

Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)
修改完成后,启动openresty下的nginx.exe
然后通过cmd运行

./nginx -s reload

启动nginx
Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)
然后浏览器键入 http://127.0.0.1:9000/ 如图所示即为成功
Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)

3 配置nignx权限控制

	#反向代理进入文件查询服务器
	upstream download{
		server  127.0.0.1:8282;
	}

    server {
        listen       8282;
        server_name  localhost;
		
		location /file_resources/private/ {
            alias  D:/society/file_resources/private/;
        }
		}
    server {
        listen       8082;
        server_name  localhost;
        
		client_max_body_size 10000m;
		
		
        location  / {
            index      index.html;
        }
        #开放文件,直接进入文件目录查找
		location /file_resources/public/ {
            alias  D:/society/file_resources/public/;
        }
		
		
		#隐私文件,匹配下载请求前缀,进入token.lua, 进行token鉴权,
		location  /file_resources/private/ {

			default_type 'text/html';
			rewrite_by_lua_file  lua/token.lua;
			proxy_pass  http://download;
		}

	}

4. token.lua编写

该处获取请求的token为get请求参数获取
如为cookie中, ngx.var.arg_token改为 ngx.var.cookie_token即可

-- 从cookie中获取token值key为token)
local token = ngx.var.arg_token
--判断token是否为空,为空返回登录
if not token then
    ngx.redirect("http://127.0.0.1:8086/login", 302)
--判断token存在,则根据redis存储格式拼写Token, “..”为字符串拼接
else
   token = "prefix_user_token_" .. ngx.var.arg_token
end

local function close_redis(red)
    if not red then
        return
    end
    local pool_max_idle_time = 30000 --毫秒  
    local pool_size = 50 --连接池大小  
    local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) 
    if not ok then
        ngx.say("close redis error : ",err);
    end
end

-- 连接redis
local redis = require "resty.redis";
local red = redis:new();
red:set_timeout(2000)

local ok,err = red:connect("192.168.0.28", 6379)
if not ok then
  ngx.say("failed to connect: ", err)
end

-- 根据自身redis是否有密码开启本部分
--local res, err = red:auth("password")
--if not res then
--  ngx.say("failed to authenticate: ", err)
--end

-- redis中若 key 存在返回 1 ,否则返回 0 。
local resp, err = red:exists(token) 
if not resp then  
    ngx.say("get msg error : ", err)  
    return close_redis(red)  
end  
if resp == ngx.null then  
    resp = ''  
end  
if resp == 0 then
--   ngx.exit(ngx.HTTP_FORBIDDEN) 
    ngx.redirect("http://127.0.0.1:8086/login", 302)
end
close_redis(red)

完成后 执行 nginx -s reload重启nginx即可

5.结果展示

开开放图片Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)

隐私图片访问失败

如图通过开发工具可以看到访问的是图片地址,由于token为空,所以直接转转到了login页面
Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)

隐私图片访问成功

带上token,访问成功
Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)文章来源地址https://www.toymoban.com/news/detail-488775.html

到了这里,关于Windows 环境下nginx 静态资源服务器(图片,文件)权限控制(nginx/openresty/lua)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Linux服务器 ] nginx 配置图片静态访问方法

    一.  Nginx安装 1.更新软件包列表:打开终端,并使用以下命令更新软件包列表: sudo yum update 2.安装 EPEL 存储库:EPEL 存储库提供了额外的软件包,其中包括 Nginx。使用以下命令安装 EPEL 存储库: sudo yum install epel-release 3.安装 Nginx:使用以下命令安装 Nginx: sudo yum install nginx

    2024年02月14日
    浏览(45)
  • 通过nginx访问服务器指定目录下图片资源

    实现步骤: 1、创建文件夹并且上传图片 2、查看nginx进程 ps -ef | grep nginx    3、修改nginx配置文件 根据步骤2查看nginx安装目录;(通常nginx安装目录为 cd /usr/local/nginx/) 如果自定义的安装目录则根据实际情况而定 进入到nginx安装目录下:  1、cd /usr/local/nginx/ 2、cd conf 3、vim

    2024年02月15日
    浏览(44)
  • 分布式 - 服务器Nginx:基础系列之Nginx静态资源配置优化sendfile | tcp_nopush | tcp_nodelay

    1. sendfile 指令 请求静态资源的过程:客户端通过网络接口向服务端发送请求,操作系统将这些客户端的请求传递给服务器端应用程序,服务器端应用程序会处理这些请求,请求处理完成以后,操作系统还需要将处理得到的结果通过网络适配器传递回去。 sendfile 指令是用于将

    2024年02月09日
    浏览(37)
  • 分布式 - 服务器Nginx:基础系列之Nginx静态资源配置指令server_name | listen | location | root | alias | index| error_page

    通过浏览器发送一个HTTP请求实现从客户端发送请求到服务器端获取所需要内容后并把内容回显展示在页面。这个时候,我们所请求的内容就分为两种类型,一类是静态资源、一类是动态资源。静态资源即指在服务器端真实存在并且能直接拿来展示的一些文件,比如常见的ht

    2024年02月04日
    浏览(45)
  • 在Windows 环境下使用 Nginx 搭建 HTTP文件服务器 实现文件下载 全步骤(详细)

    “Nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的 反向代理 和 负载均衡 。 它是由俄罗斯人 伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点开发的,并于2004年首次公开发布的。 Nginx 是什么,

    2024年02月03日
    浏览(68)
  • workflow系列教程(6)实现静态资源服务器

    如果觉得写的可以,请给一个点赞+关注支持一下 观看之前请先看,往期的博客教程,否则这篇博客没办法看懂 workFlow c++异步网络库编译教程与简介 C++异步网络库workflow入门教程(1)HTTP任务 C++异步网络库workflow系列教程(2)redis任务 workflow系列教程(3)Series串联任务流 workflow系列教程

    2024年04月13日
    浏览(34)
  • 图片、文件资源服务器(minio服务器)

    1.MinioConfig配置类 2.MinioUtil工具类 3.对应使用方法

    2024年02月11日
    浏览(52)
  • Linux服务器远程访问通过Tomcat部署的静态资源

    1.1 安装Java 下载jdk8 切换到root用户,创建文件夹/usr/local/java,将下载的jdk压缩包上传到该目录下,解压 编辑配置文件,配置环境变量,在末尾添加如下内容 重载激活配置 检查安装成功 1.2 安装Tomcat 下载tomcat 切换到root用户,创建文件夹/usr/local/tomcat,将下载的tomcat压缩包上传

    2024年01月18日
    浏览(66)
  • brew+nginx配置静态文件服务器

    背景 一下子闲下来了,了解的我的人都知道我闲不下来。于是,我在思考COS之后,决定自己整一个本地的OSS,实现静态文件的访问。那么,首屈一指的就是我很熟的 nginx 。也算是个小复习吧,复习一下 nginx 代理静态文件。 nginx的使用场景 反向代理 作为中间层的服务器,将

    2024年02月13日
    浏览(43)
  • Nginx做静态文件服务器,如何进行权限验证呢?

    在我们的日常开发过程中,经常使用nginx做文件读取服务器,因为配置非常简单,方便使用。只要通过IP和端口加上文件路径就可以读到文件或者图片了。但是,我们的安全问题该如何处理?并不是所有的人拿到图片路径就可以访问文件,这样很有可能造成文件泄露。 因此,

    2024年02月19日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包