文档章节

运维安全——安全防护-OpenResty

阿dai学长
 阿dai学长
发布于 09/18 12:45
字数 632
阅读 105
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

安装

安装OpenResty

  • 安装依赖包

    $ yum install -y readline-devel pcre-devel openssl-devel gcc
    
  • 下载最新OpenResty源码包

    $ cd /usr/local/src/
    $ wget https://openresty.org/download/openresty-1.15.8.2.tar.gz
    
  • 编译安装:

    $ tar zxvf openresty-1.15.8.2.tar.gz
    $ cd openresty-1.15.8.2/
    $ ./configure --prefix=/usr/local/openresty --with-luajit --with-http_stub_status_module --with-pcre --with-pcre-jit
    $ gmake && gmake install
    

    补充: 关于gmake和make的区别

配置waf规则

  • 下载waf规则lua文件:waf
$ cd /usr/local/src
$ git clone https://github.com/unixhot/waf.git
$ cp -a /usr/local/src/waf/waf  /usr/local/openresty/nginx/conf
  • 配置OpenResty:vim /usr/local/openresty/nginx/conf/nginx.conf

    http {
        include       mime.types;
        default_type  application/octet-stream;
        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";
    
  • 配置拦截后返回信息:vim /usr/local/openresty/nginx/conf/waf/config.lua

    --if config_waf_output ,setting url
    config_waf_redirect_url = "https://www.baidu.com" -- 重定向返回的url
    config_output_html=[[
    ...
    ]]
    
  • 启动OpenResty:

    $ /usr/local/openresty/nginx/sbin/nginx -t
    $ /usr/local/openresty/nginx/sbin/nginx
    
  • 启动报错:

    nginx: [error] lua_load_resty_core failed to load the resty.core module from https://github.com/openresty/lua-resty-core; ensure you are using an OpenResty release from https://openresty.org/en/download.html (rc: 2, reason: module 'resty.core' not found:
    	no field package.preload['resty.core']
    	no file '/usr/local/openresty/nginx/conf/waf/resty/core.lua'
    	no file '/usr/local/openresty/site/lualib/resty/core.so'
    	no file '/usr/local/openresty/lualib/resty/core.so'
    	no file './resty/core.so'
    	no file '/usr/local/lib/lua/5.1/resty/core.so'
    	no file '/usr/local/openresty/luajit/lib/lua/5.1/resty/core.so'
    	no file '/usr/local/lib/lua/5.1/loadall.so'
    	no file '/usr/local/openresty/site/lualib/resty.so'
    	no file '/usr/local/openresty/lualib/resty.so'
    	no file './resty.so'
    	no file '/usr/local/lib/lua/5.1/resty.so'
    	no file '/usr/local/openresty/luajit/lib/lua/5.1/resty.so'
    	no file '/usr/local/lib/lua/5.1/loadall.so')
    
  • 解决上述报错:错误原因是找不到lualib库和resty模块,默认到/usr/local/lib/ 去找lualib,然而在编译安装OpenResty时lualib库默认放到/usr/local/openresty/lualib

    $ ln -s /usr/local/openresty/lualib /usr/local/lib/lua
    $ ln -s /usr/local/openresty/lualib/resty /usr/local/openresty/nginx/conf/waf/resty
    
  • 启动成功:

    $ /usr/local/openresty/nginx/sbin/nginx
    $ netstat -lntp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      20273/nginx: master 
    
  • 在浏览器访问:示例 20190918156878182765768.png

关于waf的使用,可参考:README

© 著作权归作者所有

阿dai学长
粉丝 76
博文 263
码字总数 337363
作品 0
朝阳
运维
私信 提问
OpenResty x Open Talk丨深圳站

一、活动介绍 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 ...

又拍云
2018/12/13
417
2
打破基于OpenResty的WEB安全防护(CVE-2018-9230)

原文首发于安全客,原文链接:https://www.anquanke.com/post/id/103771 0x00 前言 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及...

bypass
2018/06/04
0
0
API 网关与高性能服务最佳实践丨Open Talk 广州站

一、活动说明 用户规模的日益增长,对企业的产品和服务提出了越来越高的要求。面对各种流量和性能方面的挑战,如何打造一个高性能、高并发的服务端,做出能支持千万甚至上亿用户的系统,如何...

又拍云
11/26
27
0
OpenResty x Open Talk 武汉站

一、活动介绍 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 ...

又拍云
04/11
69
0
OpenResty x Open Talk 成都站

一、活动介绍 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 ...

又拍云
08/05
28
0

没有更多内容

加载失败,请刷新页面

加载更多

交换机switch 的shutdown 与 no shutdown

shutdown是关闭接口(端口),接口状态会变为DOWN,no shutdown是激活接口(端口),状态变为UP,一般在给vlan或者端口配置管理ip或者端口ip后使用。 有时候我们配置某个端口前会需要把端口关闭到...

刘日辉
31分钟前
5
0
AOP底层源码分析

思维导图 AOP AOP: 面向切面编程[底层就是动态代理] 指程序在运行期间动态的将某段代码切入到指定方法位置进行运行的编程方式。 AOP通知方式 前置通知: logStart(),在目标方法(div)运行之前运...

volc1612
44分钟前
5
0
OSChina 周六乱弹 —— 别听他们的,你不胖你只是毛茸茸的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @且无需多言 :分享Rise Against的单曲《Audience Of One (Ghost Note Symphonies)》: 硬核朋克不插电版本,隐藏在喧嚣下的柔情! 《Audienc...

小小编辑
今天
32
2
apache httpClient实现代理发送Post请求

CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope("host", port), new UsernamePasswordCredentials(username, password......

huangkejie
今天
5
0
SpringCloud

单体应用存在的问题 ● 随着业务的发展,开发变得越来越复杂。 ● 修改、新增某个功能,需要对整个系统进行测试,重新部署。 ● 一个模块出现问题,很可能导致整个系统崩溃。 ● 多个开发团队...

Star永恒
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部