lua-nginx必须以root身份运行

时间:2015-09-16 14:39:59

标签: linux nginx lua

我有一个简单的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脚本?

2 个答案:

答案 0 :(得分:1)

如果您的nginx本身在没有sudo的情况下运行,只是不执行有问题的脚本......

这可能与有问题的lua脚本有关,与nginx没什么关系。

我会排除故障如下:

  1. 确保nginx本身在没有sudo的情况下运行。您可以使用pkill nginx和/或pkill -KILL nginx,然后使用pgrep nginx以确保当前没有nginx实例正在运行。然后在没有root的情况下执行nginx以确保它启动并继续运行。

  2. 尝试在与运行nginx的用户相同的用户下执行脚本。如果此操作失败,请向我们提供错误和生成的任何可能日志,以及相关文件和目录的idls -la

  3. 进一步了解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运行)。