最近使用 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"
<
本文介绍如何使用OpenResty和Lua解决网站部署时遇到的用户权限问题,通过init_by_lua_file和ngx.shared.configCache实现敏感配置的安全加载。
最低0.47元/天 解锁文章
1088

被折叠的 条评论
为什么被折叠?



