Need help with VeryNginx?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

alexazhou
5.6K Stars 909 Forks GNU Lesser General Public License v3.0 604 Commits 109 Opened issues

Description

A very powerful and friendly nginx base on lua-nginx-module( openresty ) which provide WAF, Control Panel, and Dashboards.

Services available

!
?

Need anything else?

Contributors list

# 16,755
Lua
CSS
458 commits
# 86,232
design-...
python3
Vue.js
Electro...
24 commits
# 137,757
egg-plu...
Socket....
Lua
golang
3 commits
# 24,314
Lua
file-br...
flysyst...
Markdow...
3 commits
# 24,249
Lua
seleniu...
webdriv...
Angular
3 commits
# 11,212
Vue.js
React
Lua
instagr...
3 commits
# 227,184
Lua
CSS
3 commits
# 228,083
Lua
CSS
3 commits
# 16,684
meteor
Lua
apple-m...
MongoDB
2 commits
# 16,588
Ruby
Lua
zstanda...
snappy
2 commits
# 269,443
Lua
curl
libcurl
Shell
1 commit
# 320,150
Lua
Docker
Shell
Go
1 commit
# 323,051
Lua
CSS
1 commit
# 304,913
Lua
C
Shell
1 commit
# 320,058
Lua
CSS
1 commit
# 208,142
C
Lua
webui
aria2
1 commit
# 323,283
Lua
CSS
1 commit
# 323,282
Lua
CSS
1 commit
# 315,827
Lua
HTML
1 commit
# 323,284
Lua
CSS
1 commit

VeryNginx

VeryNginx is a very powerful and friendly nginx .

中文文档

Notice

After v0.2 , The entry uri of control panel was moved to

/verynginx/index.html

Description

VeryNginx is based on

lua_nginx_module(openrestry)
. It implements advanced firewall(waf), access statistics and some other features. It strengthens the Nginx's functions, and provides a friendly Web interface.

VeryNginx online demo

User / Password: verynginx / verynginx

The full version of config guide can be found on: VeryNginx Wiki .

Nginx run status analyzing

  • Request per second
  • Response time
  • Net Traffic
  • Tcp connectinn num

Nginx status

Custom Action

VeryNginx supports custom actions, which can do a lot of things.

Custom action consists of two parts,

Matcher
and
Action
.
Matcher
is used to test whether a request meets the rule,
Action
is the logic you want to run.

The advantage of this design is that the

Matcher
includes all select rule, and can be reused, making use of rules to describe a very complex logic possible.

Matcher

A

Matcher
is used to select a part of all requests, a
Matcher
may contain one or more condition. The following conditions are currently supported:
  • Client IP
  • Host
  • UserAgent
  • URI
  • Referer
  • Request Args

When a request does not conflict with any of the conditions of the Matcher, the request will be selected by the

Matcher

Action

Every

Action
refers to a
Matcher
, and will run on the requests selected by the
Matcher

Now we have these

Action
s
  • Scheme Lock lock the scheme to http/https
  • Redirect Redirect request
  • URI Rewrite Do internal rewrite on the request
  • Browser Verify Use set-cookies and javascript to verify the client is a browser,and block traffic of the robot. This action may block the spider of search engine, so please enable it when under attack only.
  • Frequency Limit Limit max request time in a specified time period
  • Filter Block some request, can do the WAF

Matcher can select requests by multiple conditions, so with Filter Action, we got a powerful waf. The waf can filter requests with complex rules and return special status code when it block a request.

VeryNginx presets some simple filter rules, which can prevent simple SQL injection, Git and SVN file disclosure, directory traversal attacks and common scanning tool.

VeryNginx Matcher

VeryNginx filter

Backend

Every

Backend
refers to a
Matcher
,and will handle the requests selected by the
Matcher

Now we have these

Backend
  • Proxy Pass Proxy the request to other server
  • Static File Use local file to handle the request file

Request statistics

VeryNginx can record the request of URI, include these data of every URI:

  • All Request Count
  • Request count of every status code
  • Total Bytes
  • Avg Bytes
  • Total response time
  • Avg reqponse time

request statistics

Installation

Install Nginx / OpenResty

VeryNginx is based on OpenResty, so you need to install it first. But don't warry, VeryNginx gives a script to do it automatically.

python install.py install

Just run this command, openresty and verynginx will be installed automatically.

Want using custom nginx?

VeryNginx can install openresty automatically so that you needn't install nginx(openresty) manually.

But if you want use a nginx compiled by you self, that also ok. You can see that for some help

Use-own-nginx

Usage

Edit nginx configuration file

The configuration file of VeryNginx is

/opt/verynginx/openresty/nginx/conf/nginx.conf
, that's a demo. It just can let verynginx run so that you can see the dashboard of verynginx. If you want do something really useful, you need edit that file and add your own nginx configuration into it.

This configuration file add three

include
command to embeded verynginx into original nginx( openresty )
  • include /opt/verynginx/verynginx/nginxconf/inexternal.conf;
  • include /opt/verynginx/verynginx/nginxconf/inhttp_block.conf;
  • include /opt/verynginx/verynginx/nginxconf/inserver_block.conf;

These

include
command were placed outside a block, block http internal configuration, server configuration block inside, Remenber keep these three line when modifying. If you add a new Server configuration block or http configuration block, also need add suitable
include
line into it.

Start / Stop / Restart Service

#Start Service
/opt/verynginx/openresty/nginx/sbin/nginx

#Stop Service /opt/verynginx/openresty/nginx/sbin/nginx -s stop

#Restart Service /opt/verynginx/openresty/nginx/sbin/nginx -s reload

Configure VeryNginx on dashboard

After the service begin running, you can see server status and do config on dashboard.

The address of dashboard is

http://{{your_machine_address}}/verynginx/index.html
.

Default user and password is

verynginx
/
verynginx
. You should be able to work through all the options now.

The full version of config guide can be found in VeryNginx Wiki .

Trouble Shooting

If you have any problems during installation / configuration / use , you can refer the Trouble Shooting document.

Trouble Shooting

Tips

  • New configs will be effective immediately upon saving. It's not necessary to restart or reload nginx.

  • When you save config, VeryNginx will write all configs to

    /opt/verynginx/verynginx/configs/config.json
    .
  • If the chat in status page is stuck, you can click the gear icon in the upper right corner to turn off animation

  • If you lock yourself out of VeryNginx by doing something stupid, you can always delete

    config.json
    to revert VeryNginx to its default.

Update VeryNginx / OpenResty

Over time, VeryNginx own will evolve, and can also support newer version of OpenResty. New version of VeryNginx might support some new features or fix some old bugs. If you want to update locally installed VeryNginx, you just need pull the latest code from github to local, and run the following commands:

#Update VeryNginx
python install.py update verynginx

#Update OpenResty python install.py update openresty

install.py will keep the old config.json and nginx.conf during update. So that you will not lost configuration after update.

Build VeryNginx docker Image

After cloning code to your local filesystem, you can run the following commands:

docker build -t verynginx .
docker run verynginx

Then you can navigate to your browser

http://{{your_docker_machine_address}}/verynginx/index.html

Optionally you can run

docker run -p xxxx:80 verynginx
to map your container port 80 to your host's xxxx port

Donate

If you like VeryNginx, you can donate to support my development VeryNginx. With your support, I will be able to make VeryNginx better 😎.

PayPal

Support VeryNginx via PayPal

We Chat

Scan the QRcode to support VeryNginx.

Thanks

VeryNginx thanks for the help

Enjoy~

[^openresty]: OpenResty Openresty is a enhanced nginx,bundle standard nginx core and lots of 3rd-party nginx module.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.