当前位置:首页 > 技术文章 > 正文内容

Lua新奇玩法,让Nginx也可以执行linux的shell命令

arlanguage5个月前 (12-19)技术文章42

图/文:迷神

让Nginx使用url访问的模式,也可以执行linux的shell命令是一件很爽的事情。本文就是使用小巧的lua脚本,Nginx我使用春哥的 openresty,当然如果你自己使用原版nginx,那需要编译下lua环境。

如果大家怕麻烦,可以使用的宝塔安装的openresty环境。

一、我们先安装:sockproc

sockproc 是一个服务器程序, 侦测socket ,unix 或者 tcp , 并把收到的命令,传递给子进程执行,执行完毕后,把结果返回给客户端

git clone https://github.com/juce/sockproc  #git克隆代码
cd sockproc
make   #编译
./sockproc /tmp/cmd.sock
chmod 0666 /tmp/cmd.sock

二、下载lua-resty-shell模块

一个很小巧的非阻塞的shell执行库,用来配合openresty 使用,具体大家可以去github上看他使用的的demo

git clone https://github.com/juce/lua-resty-shell
cd lua-resty-shell
cp lib/resty/shell.lua    /openresty/lualib/resty/  #这是你的项目路径

创建lua脚本

vi /openresty/lualib/cmd.lua    --创建文件command.lua,输入下面代码

local shell = require "resty.shell"
   local args = {
            socket = "unix:/tmp/cmd.sock",  --这是第一步的unxi socket
   }
local status, out, err = shell.execute("ls", args)  --ls 是想调用的命令, 
ngx.header.content_type = "text/plain"
ngx.say("Result:\n" .. out)                    -- 命令输出结果

三、写入nginx配置

vi /openresty/nginx/conf/nginx.conf
#增加一个localtion 配置
location = /api/ls {
            content_by_lua_file /southtv/openresty/lualib/cmd.lua;
 }

然后重启下openresty,通过http://你的IP/api/ls 就可以访问啦。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/313.html

分享给朋友:

“Lua新奇玩法,让Nginx也可以执行linux的shell命令” 的相关文章

Nginx 高可用方案

原文链接:https://www.cnblogs.com/SimpleWu/p/11004902.html准备工作192.168.16.128192.168.16.129两台虚拟机。安装好Nginx安装Nginx更新yum源文件:rpm -ivh http://nginx.org/packages/...

使用Keepalived实现Nginx的自动重启及双主热备高可用

推荐阅读:20年清华架构师耗时整整一百天打造1000+道Java高频面试手册1、概述之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下。1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服务,但Nginx服务如果负载...

阿里架构师讲面试:Nginx 配置 HTTPS 完整过程,细致入微全是精华

配置站点使用 https,并且将 http 重定向至 https。1. nginx 的 ssl 模块安装查看 nginx 是否安装 http_ssl_module 模块。$ /usr/local/nginx/sbin/nginx -V如果出现 configure arguments: --with-...

docker安装php

本节将介绍在线使用Docker安装PHP解析器的步骤。通过本节的实操,您可以掌握从Docker环境的使用,PHP镜像以及Nginx服务器的拉取、导入、容器的启动的全部过程,从而具备使用Docker安装并部署PHP与ngninx的能力。本节要求您具备的基本能力有Linux,Docker,以及nginx...

压测nginx出现的问题分析

压测nginx出现no live upstreams while connecting to upstream的问题分析基础环境版本信息Centos 7.1nginx version: openresty/1.13.6.2nginx配置信息stream {   ...

405状态码Nginx解决办法

最近由于业务系统并发量比较大,所以在已有负载均衡的基础上,我们做了Nginx动静分离,但是系统访问后报错,经过F12(浏览器开发者模式)和Nginx日志分析,发现请求状态变成了405,故百度解释如下:问题原因: 请求的方式(get、post、delete)方法与后台规定的方式不符合。比如: 后台方...