我有一个简单的lua-nginx conf这种风格
server {
server_name payment.mybackend.fr
payment.mybackend.fr;
set $rails_root /home/deploy/api/MAP;
set $env 'cloud';
location ~ /(paypal|paybox_system) {
content_by_lua_file $rails_root/lib/nginx-redis-payment/$1.lua;
}
}
当我在没有sudo的情况下运行nginx时,使用我当前的用户,永远不会调用lua脚本,因此付款未经过验证。
当我用sudo运行它时,它运行得很好。
如何让nginx不使用root权限来执行我的lua脚本?
答案 0 :(得分:1)
如果您的nginx本身在没有sudo
的情况下运行,只是不执行有问题的脚本......
这可能与有问题的lua脚本有关,与nginx没什么关系。
我会排除故障如下:
确保nginx本身在没有sudo
的情况下运行。您可以使用pkill nginx
和/或pkill -KILL nginx
,然后使用pgrep nginx
以确保当前没有nginx实例正在运行。然后在没有root的情况下执行nginx
以确保它启动并继续运行。
尝试在与运行nginx的用户相同的用户下执行脚本。如果此操作失败,请向我们提供错误和生成的任何可能日志,以及相关文件和目录的id
和ls -la
。
进一步了解nginx以及脚本失败时生成的任何可能的日志。
答案 1 :(得分:0)
我无权对您的回答发表评论,所以如果这个答案应该属于评论部分而不是回答,我很抱歉。
我刚才经历过类似的事情,我提出了一个想法:https://stackoverflow.com/questions/32593747/idea-for-reload-restart-apache-from-php-script-without-running-as-root
这个想法是一样的:出于安全原因,你不想以root身份运行Nginx,但是你真的想以root身份执行一些预定义的命令。使用非根脚本(假设您将PHP脚本放在您的位置“/(paypal | paybox_system)”),这样它就可以写入监视文件夹,守护进程(以root身份运行)然后获取信号并执行root突击队(例如将你的lua脚本作为sudo运行)。