openresty网站生产环境部署中的用户安全

本文介绍如何使用OpenResty和Lua解决网站部署时遇到的用户权限问题,通过init_by_lua_file和ngx.shared.configCache实现敏感配置的安全加载。

最近使用 openresty + 制做网站 lua-resty-template 做了个网站, 这个框架的优点就是一个字"快", 但部署到linux服务器上时却遇到了用户权限的问题,在这记录下解决的方法.

痛点:

1.nginx 用户分两个 "启动用户" 和 "工作用户" , 如果以root启用,并且不指定工作用户的话,那么默认使用一个叫 "nobody" 的用户,这个用户的权限比较低,对一些文件是没有访问权限的.

2.如果建立一个用户并同时设置为"工作用户"和"启动用户" 那么将会将整个网站中所有的文件暴露出去,包括项目中的各种敏感配置文件,比如所连接的数据数密码.另外以普通用户启动nginx的话是无法设置"工作用户"的.会收到提示:

the "user" directive makes sense only if the master process runs with super-user privileges, ignored in ...

意思就是以普通用户启动的nginx,再设置工作用户是没有意义的.

那我怎么才能即让用户访问到特点的资源,而又不把整个网站都暴露出去呢!

 

解决方法:

   总体来说就是使用 openresty 的 init_by_lua_file  加 ngx.shared.configCache

原理 :

    init_by_lua_file 是在 nginx 的 master process 上 worker process 之前运行的, 所以说它是以 "启动用户"来运行的, 那么在init_by_lua_file阶段把配置读到ngx.shared.configCache中去,然后再在各worker process中取得就好了.

示例:

   把项目的 conf 目录和资源目录分配给不同的用户, 如 把conf 目录分给用户 "root"  , 把资源目录分给用户 "www"

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值