Ubuntu NGINX 1.10-1.14

Add the package repositories

Add the version of the Ubuntu package repository that you want to use:

Ubuntu 22.04 - jammy

$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https wget gnupg
$ wget -qO - https://apt.signalsciences.net/release/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/sigsci.gpg
$ sudo echo "deb [signed-by=/usr/share/keyrings/sigsci.gpg] https://apt.signalsciences.net/release/ubuntu/ jammy main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list
$ sudo apt-get update

Ubuntu 20.04 - focal

$ sudo apt update
$ sudo apt-get install -y apt-transport-https wget
$ wget -qO - https://apt.signalsciences.net/release/gpgkey | sudo apt-key add -
$ sudo echo "deb https://apt.signalsciences.net/release/ubuntu/ focal main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list && sudo apt-get update

Ubuntu 18.04 - bionic

$ sudo apt update
$ sudo apt-get install -y apt-transport-https wget
$ wget -qO - https://apt.signalsciences.net/release/gpgkey | sudo apt-key add -
$ sudo echo "deb https://apt.signalsciences.net/release/ubuntu/ bionic main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list && sudo apt-get update

Ubuntu 16.04 - xenial

$ sudo apt-get install -y apt-transport-https wget
$ wget -qO - https://apt.signalsciences.net/release/gpgkey | sudo apt-key add -
$ sudo echo "deb https://apt.signalsciences.net/release/ubuntu/ xenial main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list && sudo apt-get update

Ubuntu 14.04 - trusty

$ sudo apt-get install -y apt-transport-https wget
$ wget -qO - https://apt.signalsciences.net/release/gpgkey | sudo apt-key add -
$ sudo echo "deb https://apt.signalsciences.net/release/ubuntu/ trusty main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list && sudo apt-get update

Ubuntu 12.04 - precise

$ sudo apt-get install -y apt-transport-https wget
$ wget -qO - https://apt.signalsciences.net/release/gpgkey | sudo apt-key add -
$ sudo echo "deb https://apt.signalsciences.net/release/ubuntu/ precise main" | sudo tee /etc/apt/sources.list.d/sigsci-release.list && sudo apt-get update

Enable Lua for NGINX

Some older versions of NGINX don't support native loading of Lua modules. Therefore, we require NGINX to be built with Lua and LuaJIT support. You must first ensure that Lua is installed and enabled for NGINX before enabling the Next-Gen WAF NGINX module.

Install the Lua NGINX Module

Install the dynamic Lua NGINX Module appropriate for your NGINX distribution.

NGINX.org distribution

  1. Install the Lua NGINX Module.

    • NGINX 1.12.1 or higher

      $ sudo apt-get install nginx-module-lua
    • NGINX 1.11

      $ sudo apt-get install nginx111-lua-module
    • NGINX 1.10

      $ sudo apt-get install nginx110-lua-module
  2. In your NGINX config file (located by default at /etc/nginx/nginx.conf), add the following lines to the global section after the line that starts with pid:

    load_module modules/ndk_http_module.so;
    load_module modules/ngx_http_lua_module.so;
  3. Restart the NGINX service to initialize the new module.

    $ sudo service nginx restart

Ubuntu distribution

Enable Lua by installing the nginx-extras package.

$ sudo apt-get install nginx-extras && sudo service nginx restart

Check that Lua is loaded correctly

Load the following config (e.g., sigsci_check_lua.conf) with NGINX to verify that Lua has been loaded properly:

1# Config just to test for lua jit support
2#
3# Test from commandline as follows:
4# nginx -t -c <explicit path>/sigsci_check_lua.conf
5#
6
7# The following load_module directives are required if you have installed
8# any of: nginx110-lua-module, nginx111-lua-module, or nginx-lua-module
9# for your nginx.org installation.
10# Also, for some nginx-1.10.nn installed from nginx-extras package, you may
11# need to specify the load directives.
12# Given the above uncomment the following:
13#
14# load_module modules/ndk_http_module.so;
15# load_module modules/ngx_http_lua_module.so;
16
17events {
18 worker_connections 768;
19 # multi_accept on;
20}
21http {
22init_by_lua '
23
24local m = {}
25local ngx_lua_version = "dev"
26
27if ngx then
28 -- if not in testing environment
29 ngx_lua_version = tostring(ngx.config.ngx_lua_version)
30 ngx.log(ngx.STDERR, "INFO:", " Check for jit: lua version: ", ngx_lua_version)
31end
32
33local r, jit = pcall(require, "jit")
34if not r then
35 error("ERROR: No lua jit support: No support for SigSci Lua module")
36else
37
38 if jit then
39 m._SERVER_FLAVOR = ngx_lua_version .. ", lua=" .. jit.version
40 if os.getenv("SIGSCI_NGINX_DISABLE_JIT") == "true" then
41 nginx.log(ngx.STDERR, "WARNING:", "Disabling lua jit because env var: SIGSCI_NGINX_DISABLE_JIT=", "true")
42 end
43 ngx.log(ngx.STDERR, "INFO:", " Bravo! You have lua jit support=", m._SERVER_FLAVOR)
44 else
45 error("ERROR: No luajit support: No support for SigSci")
46 end
47
48end
49
50';
51
52}

You can load the script by running the following command:

$ nginx -t -c <your explicit path>/sigsci_check_lua.conf

If the config is successfully loaded, the above script will create the following output:

nginx: [] [lua] init_by_lua:9: INFO: Check for jit: lua version: 10000
nginx: [] [lua] init_by_lua:22: INFO: Bravo! You have lua jit support=10000, lua=LuaJIT 2.0.4
nginx: the configuration file <your explicit path>/sigsci_check_lua.conf syntax is ok
nginx: configuration file <your explicit path>/sigsci_check_lua.conf test is successful

Install the NGINX module

  1. Install the module.

    $ apt-get install sigsci-module-nginx
  2. Add the following to your NGINX configuration file (located by default at /etc/nginx/nginx.conf) in the http context:

    include "/opt/sigsci/nginx/sigsci.conf";
  3. Restart the NGINX Service to initialize the new module.

    • Ubuntu 15.04 or higher

      $ sudo systemctl restart nginx
    • Ubuntu 14.04 or lower

      $ sudo restart nginx
Was this guide helpful?

Do not use this form to send sensitive information. If you need assistance, contact support. This form is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.