command
NGINX Execute 模块中的 'command' 指令允许通过 HTTP 请求执行系统命令。
NGINX Execute module
·
location
语法command on;
默认值none
上下文location
参数1
说明
'command' 指令在 NGINX 的 server 块的 location 块中配置,接受一个参数,该参数激活用于执行 shell 命令的处理器。启用时(设置为 'on'),它允许带有特定参数的 HTTP GET 或 POST 请求在服务器上执行 shell 命令。命令从请求参数中解析,特别是查找模式 'system.run[command]'。
该模块解析传入请求并从 URL 参数中提取要执行的命令。该提取由一个简单的解析函数完成,该函数识别命令及任何相关参数。在使用专门的执行函数执行命令后,会收集结果并作为响应载荷返回给客户端。需要注意的是,运行的命令必须适合 NGINX 进程的权限,因此在使用此功能时应谨慎考虑安全性。
由于可能执行任意命令,建议仅在受信任的环境中启用 'command' 指令,或在生产环境中完全禁用它。该模块还会丢弃需要用户交互或是持续运行的命令,因为它们不适合 HTTP 请求-响应模型。
配置示例
location / {
root html;
index index.html index.htm;
command on;
}⚠
确保执行的命令不需要用户交互,因为它们将无法正常工作。
⚠
对通过 HTTP 暴露命令执行的安全影响要小心;限制可执行的命令类型并进行输入校验是必要的。
⚠
请记住,NGINX 用户的权限会影响哪些命令可以成功执行。