search close

Red Hat Nginx 1.9 or lower

access_time Updated Dec 5, 2022

Add the package repositories

Add the version of the Red Hat CentOS package repository that you want to use:

Red Hat CentOS 8

sudo tee /etc/yum.repos.d/sigsci.repo <<-'EOF'
[sigsci_release]
name=sigsci_release
baseurl=https://yum.signalsciences.net/release/el/8/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://yum.signalsciences.net/release/gpgkey https://dl.signalsciences.net/sigsci-agent/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

Red Hat CentOS 7

sudo tee /etc/yum.repos.d/sigsci.repo <<-'EOF'
[sigsci_release]
name=sigsci_release
baseurl=https://yum.signalsciences.net/release/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://yum.signalsciences.net/release/gpgkey https://dl.signalsciences.net/sigsci-agent/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

Red Hat CentOS 6

Note: After Q2 2017, RHEL6 and CentOS 6 will exit “Production Phase 2” according to the Red Hat Enterprise Linux Life Cycle. Only limited “critical” security fixes will be issued. You will need to review the lifecycle document for details and plan appropriately.

sudo tee /etc/yum.repos.d/sigsci.repo <<-'EOF'
[sigsci_release]
name=sigsci_release
baseurl=https://yum.signalsciences.net/release/el/6/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://yum.signalsciences.net/release/gpgkey https://dl.signalsciences.net/sigsci-agent/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

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 the third party ngx_lua module. Because most older versions of Nginx do not support dynamically loadable modules, you will likely need to rebuild Nginx from source.

To assist you, we provide pre-built drop-in replacement Nginx packages already built with the ngx_lua module. This is intended for users who prefer not to build from source, or who either use a distribution-provided package or an official Nginx provided package. These pre-built packages are built to support much older distributions and are not gpg signed.

Flavors

We support three “flavors” of Nginx. These flavors are based on what upstream package we’ve based our builds on. All our package flavors are built according to the official upstream maintainer’s build configuration with the addition of the ngx_lua and ngx_devel_kit modules.

Our provided flavors are:

  • Distribution: the distribution flavor is based off the official distribution-provided Nginx packages. For Debian-based Linux distributions (Red Hat and Debian) these are the based off the official Debian Nginx packages.

    For Red Hat based Linux distributions we’ve based them off the EPEL packages as neither Red Hat or CentOS ship an Nginx package in their default distribution.

  • Stable: the stable flavor is based off the official Nginx.org “stable” package releases.

  • Mainline: the mainline flavor is based off the official Nginx.org “mainline” package releases.

Flavor version support

The following versions are contained in the various OS and flavor packages:

OS Distribution Stable Mainline
Red Hat/CentOS EL7 1.6.2 1.8.1 1.9.10
Red Hat/CentOS EL6 1.0.15 1.8.1 1.9.10

The versions are dependent on the upstream package maintainer’s supported version.

Yum Repository setup for CentOS 7/RHEL 7

  1. Create a file /etc/yum.repos.d/sigsci_nginx.repo with the following contents:

    • Distribution (CentOS 7/RHEL 7) flavor

      Note: Our distribution release depends on the EPEL repository, you will need to ensure your system also has it installed.

      [sigsci_nginx]
      name=sigsci_nginx
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/distro/el7/$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
      [sigsci-nginx-noarch]
      name=sigsci_nginx_noarch
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/distro/el7/noarch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
    • Stable (CentOS 7/RHEL 7) flavor

      [sigsci_nginx]
      name=sigsci_nginx
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/stable/el7/$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
    • Mainline (CentOS 7/RHEL 7) flavor

      [sigsci_nginx]
      name=sigsci_nginx
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/mainline/el7/$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
  2. Rebuild the yum cache for the Signal Sciences repository.

    yum -q makecache -y --disablerepo=* --enablerepo=sigsci_*
    
  3. Install the version of Nginx provided by Signal Sciences.

    yum install nginx
    

Yum repository setup for CentOS 6/RHEL 6

To configure your yum repository on your Red Hat or CentOS systems:

  1. Create a file /etc/yum.repos.d/sigsci_nginx.repo with the following contents:

    • Distribution (CentOS 6/RHEL 6) flavor

      Note: Our distribution release depends on the EPEL repository, you will need to ensure your system also has it installed.

      [sigsci_nginx]
      name=sigsci_nginx
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/distro/el6/$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
      [sigsci-nginx-noarch]
      name=sigsci_nginx_noarch
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/distro/el6/noarch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
    • Stable (CentOS 6/RHEL 6) flavor

      [sigsci_nginx]
      name=sigsci_nginx
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/stable/el6/$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
    • Mainline (CentOS 6/RHEL 6) flavor

      [sigsci_nginx]
      name=sigsci_nginx
      priority=1
      baseurl=https://yum.signalsciences.net/nginx/mainline/el6/$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://yum.signalsciences.net/nginx/gpg.key
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      
  2. Rebuild the yum cache for the Signal Sciences repository.

    yum -q makecache -y --disablerepo=* --enablerepo=sigsci_*
    
  3. Install the version of Nginx provided by Signal Sciences.

    yum install nginx
    

Check Lua is loaded correctly

To verify Lua has been loaded properly load the following config (sigsci_check_lua.conf) with Nginx:

  # Config just to test for lua jit support
  #
  # Test from commandline as follows:
  # nginx -t -c <explicit path>/sigsci_check_lua.conf
  #
  
  # The following load_module directives are required if you have installed
  # any of: nginx110-lua-module, nginx111-lua-module, or nginx-lua-module
  # for your nginx.org installation.
  # Also, for some nginx-1.10.nn installed from nginx-extras package, you may
  # need to specify the load directives.
  # Given the above uncomment the following:
  #
  # load_module modules/ndk_http_module.so;
  # load_module modules/ngx_http_lua_module.so;
  
  events {
      worker_connections 768;
      # multi_accept on;
  }
  http {
  init_by_lua '
  
  local m = {}
  local ngx_lua_version = "dev"
  
  if ngx then
    -- if not in testing environment
    ngx_lua_version = tostring(ngx.config.ngx_lua_version)
    ngx.log(ngx.STDERR, "INFO:", " Check for jit: lua version: ", ngx_lua_version)
  end
  
  local r, jit = pcall(require, "jit")
  if not r then
    error("ERROR: No lua jit support: No support for SigSci Lua module")
  else
  
    if jit then
      m._SERVER_FLAVOR = ngx_lua_version .. ", lua=" .. jit.version
      if os.getenv("SIGSCI_NGINX_DISABLE_JIT") == "true" then
        nginx.log(ngx.STDERR, "WARNING:", "Disabling lua jit because env var: SIGSCI_NGINX_DISABLE_JIT=", "true")
      end
      ngx.log(ngx.STDERR, "INFO:", " Bravo! You have lua jit support=", m._SERVER_FLAVOR)
    else
      error("ERROR: No luajit support: No support for SigSci")
    end
  
  end
  
  ';
  
  }

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

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

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 with yum.

    yum 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.

    • CentOS 7/RHEL 7

      systemctl restart nginx
      
    • CentOS 6/RHEL 6

      restart nginx