Module Configuration

Required NGINX Configuration

The following NGINX configurations are required to support the HUMAN NGINX C-Core module:

Resolver

The Resolver directive must be configured in the HTTP section of your NGINX configuration.

  • Set the resolver, resolver A.B.C.D;, to an external DNS resolver, such as Google (resolver 8.8.8.8;),

or

  • Set the resolver, resolver A.B.C.D;, to the internal IP address of your DNS resolver (resolver 10.1.1.1;).

This is required for NGINX to resolve the HUMAN API.

Required HUMAN Module Configuration

The following parameters are mandatory:

  • px_enabled
  • px_appId
  • px_cookie_secret
  • px_auth_token
$-- ## Required Parameters ##
$px_enabled true;
$px_appId "<PX_APP_ID>";
$px_auth_token "<PX_AUTH_TOKEN>";
$px_cookie_secret "<COOKIE_ENCRYPTION_KEY>";

  • px_appId - The HUMAN custom application id in the format of HUMAN**__** .
  • px_cookie_secret - The key used by the cookie signing page. The Cookie Key is generated in the HUMAN PortalPolicy page.
  • px_auth_token - The JWT token for REST API. The Authentication Token is generated in HUMAN PortalApplication page.

nginx.conf Example

The following nginx.conf example contains the minimum required configuration for the HUMAN NGINX C-Core module:

$worker_processes auto;
$
$load_module /usr/lib/nginx/modules/ngx_http_pxnginx_module.so;
$thread_pool px_pool threads=10;
$
$error_log /var/log/nginx/error.log info;
$events {
$ worker_connections 1024;
$}
$
$http {
$ real_ip_header X-Forwarded-For;
$ resolver 8.8.8.8;
$
$ server {
$ listen 80;
$ listen [::]:80;
$
$ px_enabled true;
$ px_appId "<PX_APP_ID>";
$ px_auth_token "<PX_AUTH_TOKEN>";
$ px_cookie_secret "<COOKIE_ENCRYPTION_KEY>";
$
$ location / {
$ root /nginx/www;
$ index index.html;
$ }
$ }
$}

Using ’$’ character in Nginx configuration.

$ (dollar) character has a special meaning in Nginx configuration (it serves as the variable name prefix). 

In order to use ’$’ character in Enforcer configuration (such as RegEx values), this character must be escaped using the following workaround:

1geo $dollar {
2 default "$";
3}
4
5http {
6 ...
7 server {
8 ...
9 px_filter_by_domain "img\.example\.com$dollar|docs\.example\.com$dollar";
10 ...

In this example we want to add attheendofeachitem(img.example.com at the end of each item (**img\\.example\\.com), but as we need to escape ,thentheescapedstringwilllooklikethis:img.example.com, then the escaped string will look like this: **img\\.example\\.comdollar