lua-nginx 必须以 root 用户身份运行。

我有一个简单的 lua-nginx 配置文件,如下所示:

  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 脚本?

点赞
用户88888888
用户88888888

对不起,我没有在您的回答中发表评论的权限,如果此答案应该放在评论部分而不是答案,请谅解。

我以前也遇到过类似的问题,并想出了一个想法:https://stackoverflow.com/questions/32593747/idea-for-reload-restart-apache-from-php-script-without-running-as-root

这个想法是一样的:出于安全原因,您不希望以root身份运行Nginx,但您确实希望作为root执行某些预定义的命令。使用非root脚本(比如您将一个php脚本放在"/(paypal|paybox_system)"的位置),这样它就可以写入一个监视文件夹,守护进程(以root权限运行)接收到信号后执行一个root命令(例如以sudo运行您的lua脚本)。

2015-09-22 14:11:31
用户1122270
用户1122270

只要你的 nginx 本身不需要 sudo 运行,就可以不执行相关脚本……

这很可能与相关的 Lua 脚本有关,而与 nginx 本身关系不大。

我建议按照以下步骤进行故障排除:

  1. 确保 nginx 本身可以不需要 sudo 运行。你可以使用 pkill nginx 和/或 pkill -KILL nginx,然后使用 pgrep nginx 确保当前没有 nginx 实例正在运行。然后以非 root 用户执行 nginx,确保它能够启动并持续运行。

  2. 尝试以与运行 nginx 的用户相同的用户身份执行脚本。如果执行失败,请将出现的错误和可能生成的日志以及相关文件和目录的 idls -la 提供给我们。

  3. 进一步查看 nginx 和脚本在失败时生成的任何可能的日志。

2015-09-26 01:43:22