Nginx+lua开发环境openresty

OpenResty是由 Nginx 核心加很多第三方模块组成,默认集成了 Lua 开发环境,使得 Nginx 可以作为一个 Web Server 使用。借助于 Nginx 的事件驱动模型和非阻塞 IO,可以实现高性能的 Web 应用程序。而且 OpenResty 提供了大量组件如 Mysql、Redis、Memcached 等等,使在 Nginx 上开发Web 应用更方便更简单。可以理解成openresty是Nginx的超级加强版。
选择源码编译的方法,下载源码tar包,安装在 /usr/servers/下。

mkdir -p /usr/servers  
cd /usr/servers/ 
wget http://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz  
tar -xzvf ngx_openresty-1.7.7.2.tar.gz

提前安装依赖包:

yum install -y perl pcre-devel openssl openssl-devel gcc curl gcc-c++ readline-devel 
cd /usr/servers/ngx_openresty-1.7.7.2/bundle/LuaJIT-2.1-20150120/  
make clean && make && make install  
ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit

下载 ngx_cache_purge 模块,该模块用于清理 nginx 缓存

cd /usr/servers/ngx_openresty-1.7.7.2/bundle  
wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz  
tar -xvf 2.3.tar.gz 

下载 nginx_upstream_check_module 模块,该模块用于 ustream 健康检查

cd /usr/servers/ngx_openresty-1.7.7.2/bundle  
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz  
tar -xvf v0.3.0.tar.gz

开始编译安装:

cd /usr/servers/ngx_openresty-1.7.7.2  
./configure --prefix=/usr/servers --with-http_realip_module  --with-pcre  --with-luajit --add-module=./bundle/ngx_cache_purge-2.3/ --add-module=./bundle/nginx_upstream_check_module-0.3.0/ -j2  
make && make install

–with*** 安装一些内置/集成的模块 –with-http_realip_module 取用户真实 ip 模块 -with-pcre Perl 兼容的达式模块 –with-luajit 集成 luajit 模块 –add-module 添加自定义的第三方模块,如此次的 ngx_che_purge
查看是否安装成功:

cd /usr/servers/    
ll 

会发现多出来了如下目录,说明安装成功
/usr/servers/luajit :luajit 环境,luajit 类似于 java 的 jit,即即时编译,lua 是一种解释语言,通过 luajit 可以即时编译 lua 代码到机器代码,得到很好的性能;
/usr/servers/lualib:要使用的 lua 库,里边提供了一些默认的 lua 库,如 redis,json 库等,也可以把一些自己开发的或第三方的放在这;
/usr/servers/nginx :安装的 nginx;
查看版本:
通过 /usr/servers/nginx/sbin/nginx -V 查看 nginx 版本和安装的模块

上面已经完成了openresty的安装,下面来开始配置 nginx+lua 开发环境了
编辑 nginx.conf 配置文件

vim /usr/servers/nginx/conf/nginx.conf

在 http 部分添加如下配置

#lua模块路径,多个之间”;”分隔,其中”;;”表示默认搜索路径,默认到/usr/servers/nginx下找  
lua_package_path "/usr/servers/lualib/?.lua;;";  #lua 模块  
lua_package_cpath "/usr/servers/lualib/?.so;;";  #c模块 
include /usr/example/example.conf; 

建立项目存放目录,写测试页面:

mkdir -p /usr/example/lua/
vim /usr/example/example.conf
server {
    listen       80;
    server_name  _;

    location /lua {
        default_type 'text/html';
        lua_code_cache off;
        content_by_lua_file /usr/example/lua/test.lua;
    }
}

vim /usr/example/lua/test.lua
ngx.say("hello world,hello world");
ngx.say("The environment of 'nginx+lua' has been configured.");

注意,特别注意!!!!
可以看到我们的配置文件里面用的是80端口,如果是测试环境,我们只要找到现在系统正在占用80端口的程序然后杀死就好了,如果是线上环境,改掉openresty配置文件里面的端口,改没有使用的端口。

启动Nginx:

/usr/servers/nginx/sbin/nginx -t
/usr/servers/nginx/sbin/nginx -s reload
/usr/servers/nginx/sbin/nginx
ps -ef|grep nginx

测试:
访问如 http://192.168.1.237/lua(自己的机器根据实际情况换 ip),如果一切正常可以看到页面显示”hello world”

如需用脚本部署,请参考:https://blog.csdn.net/weixin_37998647/article/details/79826362

关闭防火墙或者开放虚拟机防火墙端口,

这里为了方便,直接就关闭防火墙了,生产中必须采用开放防火墙端口的方式

systemctl stop firewalld
systemctl status firewalld

部署waf

下载waf包  https://github.com/unixhot/waf

可以使用wget,也可以下载到本地,让后上传到虚拟机

解压后,将waf复制到 /usr/local/openresty/nginx/conf/

cp -r waf /usr/local/openresty/nginx/conf/

git clone https://github.com/unixhot/waf.git
cp -a ./waf/waf /usr/local/openresty/nginx/conf/
修改Nginx的配置文件,加入以下配置。注意路径,同时WAF日志默认存放在/tmp/日期_waf.log
#WAF
    lua_shared_dict limit 50m;
    lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
    init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua";
    access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";

 /usr/local/openresty/nginx/sbin/nginx –t
 /usr/local/openresty/nginx/sbin/nginx
文 / Aex
LEAVE A REPLY

loading