ocp - VeryNginx安装

安装 Nginx / OpenResty

VeryNginx 基于 OpenResty[^openresty],所以你需要先安装它:
OpenResty安装前准备
●Centos:yum install -y readline-devel pcre-devel openssl-devel gcc GeoIP-devel
●Debian|Ubuntu:apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential libgeoip-dev
●紫色为geoip模块所需要的基础库
OpenResty安装

●wget  https://openresty.org/download/openresty-1.11.2.1.tar.gz
●tar -zxvf openresty-1.11.2.1.tar.gz
●cd openresty-1.11.2.1
●./configure --with-luajit --with-pcre --with-http_gzip_static_module --with-http_realip_module --with-http_geoip_module --with-http_ssl_module --with-http_stub_status_module --prefix=/app/openresty
●make && make install

VeryNginx 实际使用到了 OpenResty 中的这些模块
lua-nginx-module
http_stub_status_module
lua-cjson library
如果你不想安装 OpenResty,或者你已经有了一个正在工作的 Nginx,你也可以自己手动为 Nginx 编译安装这些模块
部署 VeryNginx

克隆 VeryNginx 仓库到本地, 复制 nginx.conf 和 VeryNginx 文件夹到 Nginx 的工作目录.

cd ~
git clone https://github.com/alexazhou/VeryNginx.git
rm -f /app/openresty/nginx/conf/nginx.conf
cp ~/VeryNginx/nginx.conf /app/openresty/nginx/conf/nginx.conf
# 创建 /app/openresty/nginx/waf/verynginx 目录
mkdir -p /app/openresty/nginx/waf/verynginx
# 把 /VeryNginx/verynginx 拷贝到 /app/openresty/nginx/waf/verynginx
cp -r ~/VeryNginx/verynginx /app/openresty/nginx/waf/verynginx

编辑 Nginx 配置文件

VeryNginx 项目提供了一个配置模版
/app/openresty/nginx/conf。你需要把自己站点的 Nginx 配置加到这个模版里面。 但是记得不要修改配置 VeryNginx 的那部分代码(除非你知道自己在干啥 😈 )。
接下来,说明配置文件有三点比较重要:
include /app/openresty/nginx/waf/verynginx/verynginx/nginx_conf/in_external.conf;
include /app/openresty/nginx/waf/verynginx/verynginx/nginx_conf/in_http_block.conf;
include /app/openresty/nginx/waf/verynginx/verynginx/nginx_conf/in_server_block.conf;
in_http_block.conf z合格配置文件需要修改

upstream vn_upstream{
    server 127.0.0.1;
    balancer_by_lua_file /app/openresty/nginx/waf/verynginx/verynginx/lua_script/on_banlance.lua;
        keepalive 1024; #Connection pool
}

lua_package_path '/app/openresty/nginx/waf/verynginx/verynginx/lua_script/?.lua;;/app/openresty/nginx/waf/verynginx/verynginx/lua_script/module/?.lua;;';
lua_package_cpath '/app/openresty/nginx/waf/verynginx/verynginx/lua_script/?.so;;';
lua_code_cache on;

lua_shared_dict status 1m;
lua_shared_dict frequency_limit 10m;
lua_shared_dict summary_long 10m;
lua_shared_dict summary_short 10m;

init_by_lua_file /app/openresty/nginx/waf/verynginx/verynginx/lua_script/on_init.lua;
rewrite_by_lua_file /app/openresty/nginx/waf/verynginx/verynginx/lua_script/on_rewrite.lua;
access_by_lua_file /app/openresty/nginx/waf/verynginx/verynginx/lua_script/on_access.lua;
log_by_lua_file /app/openresty/nginx/waf/verynginx/verynginx/lua_script/on_log.lua;

其他2个文件不要改变
配置 VeryNginx 的代码是下面这部分:

#-----------------VeryNginx config code------------------
 #user  nginx;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

include /app/openresty/nginx/waf/verynginx/verynginx/nginx_conf/in_external.conf;
#include /app/openresty/nginx/waf/verynginx/nginx_conf/in_http_block.conf;
http {
    charset utf-8;
    sendfile     on;
    tcp_nopush   on;
    tcp_nodelay  on;
    server_tokens off;
    types_hash_max_size 2048;
    server_names_hash_bucket_size 128;
    large_client_header_buffers 4 32k;
    fastcgi_intercept_errors on;
    proxy_intercept_errors on;
    underscores_in_headers on;

    client_header_timeout      15s;
    client_body_timeout        15s;
    client_max_body_size      100m;
    client_body_buffer_size   2m;
    client_header_buffer_size 256k;

    #keepalive_timeout  0;
    keepalive_timeout  90s;
    keepalive_requests 2000;

    # MIME
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    #tcp_nopush     on;

    #keepalive_timeout  0;

    # gzip
    gzip               on;
    gzip_min_length    1k;
    gzip_buffers       4 16k;
    gzip_http_version  1.1;
    gzip_comp_level    6;
    gzip_types         text/plain text/css application/javascript application/x-javascript application/xml application/json;
    gzip_vary          on;

    proxy_connect_timeout    5s;
    proxy_read_timeout       1800s;
    proxy_send_timeout       1800s;
    proxy_buffer_size        128k;
    proxy_buffers            100 128k;
    #proxy_busy_buffers_size 1m;
    #proxy_temp_file_write_size 512k;

        #this line shoud be include in every http block
    include /app/openresty/nginx/waf/verynginx/verynginx/nginx_conf/in_http_block.conf;

    log_format   main   '$remote_addr -'
                        ' $remote_user'
                        ' [$time_local]'
                        ' "$request"'
                        ' $status'
                        ' $body_bytes_sent'
                        ' "$http_referer"'
                        ' "$http_user_agent"'
                        ' "$http_x_forwarded_for"'
                        ' $upstream_response_time'
                        ' $upstream_addr';

    access_log  logs/access.log  main;


    upstream gateway_pool {
          # 网关的地址
        server 106.12.129.14:9200;

    }



    server {
        listen       80;

        #this line shoud be include in every server block
        include /app/openresty/nginx/waf/verynginx/verynginx/nginx_conf/in_server_block.conf;
        #include /app/openresty/nginx/waf/verynginx/nginx_conf/in_http_block.conf;
        location / {
           proxy_http_version 1.1;
           proxy_set_header Connection "";
           proxy_redirect      off;
           proxy_set_header    X-Real-IP $remote_addr;
           proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header    X-Forwarded-Host $host;
           proxy_set_header    X-Forwarded-Proto $http_x_forwarded_proto;
           proxy_set_header    Host $host;
           proxy_pass http://gateway_pool;
        }
    }

}

#---------------VeryNginx config code end-----------------

如果不使用 VeryNginx 提供的配置模版,你也可以手动把这部分加入到自己的 Nginx 配置文件中. (如果安装路径不是/app/openresty ,需要对 lua_package_cpath 和 lua_package_path 的值进行修改)
启动服务

/app/openresty/nginx/sbin/nginx
停止服务

/app/openresty/nginx/sbin/nginx -s stop
对 VeryNginx 进行配置

打开浏览器访问 http://127.0.0.1/verynginx/index.html 。
默认用户名和密码是 verynginx / verynginx 。
登录之后就可以查看状态,并对配置进行修改了。修改配置后,记得到 「配置 > 系统 > 全部配置」去保存.
提示

通过 VeryNginx 控制面板保存新配置之后,会立刻生效,并不需要 restart/reload Nginx。
VeryNginx 把配置保存在 /app/openresty/nginx/waf/verynginx/configs/config.json 里面。
如果因为配错了什么选项,导致无法登录,可以手动删除 config.json 来清空配置。

VeryNginx WAF功能

支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。
支持URL白名单,将不需要过滤的URL进行定义。
支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。
支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。
支持URL参数过滤,原理同上。
支持日志记录,将所有拒绝的操作,记录到日志中去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值