Nginx options and variables

About Nginx

Applications deployed with Cloud 66 use Nginx as their web server, and its configuration is dependent on the resources of your server(s).

Boolean variables

To ensure correct boolean condition checks within your template, always explicitly compare the variable with true or false (even if you are checking for true).

Good syntax:

Bad syntax:

Default Nginx configuration

The following table outlines the default configuration of Nginx.

Category Attribute Default value
General
user nginx
worker_processes Dynamically set based on instance size
error_log /var/deploy/[app_name]/web_head/shared/log/nginx_error.log
Events
worker_connections 1024
HTTP
gzip on
gzip_min_length 100
gzip_proxied expired no-cache no-store private auth
gzip_types text/plain application/xml text/css application/x-javascript text/javascript
gzip_disable "MSIE [1-6]\."
passenger_root [passenger location]
passenger_ruby [app ruby shell]
passenger_ruby nginx
passenger_pool_idle_time 0
passenger_max_pool_size 15
ssl_session_cache shared:SSL:10m
ssl_session_timeout 10m
underscores_in_headers on
default_type application/octet-stream
client_max_body_size 50m
sendfile on
server_tokens off
keepalive_timeout 65
Server
listen 80 default_server
server_name _ or SSL server name
rails_env [app environment]
client_max_body_size 50m
root /var/deploy/[app name]/web_head/current/public
passenger_enabled on
ssl_certificate_key /etc/ssl/localcerts/[ssl cerificate file name].key
ssl_certificate /etc/ssl/localcerts/[ssl cerificate file name].crt

Nginx CustomConfig variables

The following variables are available for use in your Nginx CustomConfig.

Variable Name Type Description
allow_ssl boolean Is an SSL Certificate configured on the application?
app_name string Application name (lowercase)
blacklist hash List of IPs you are blacklisting
cors_all_origins boolean CORS allow all origins
cors_credentials boolean CORS allow credentials
cors_enabled boolean Is CORS enabled on the application?
cors_headers string CORS allowed custom headers
cors_methods string CORS Methods
cors_origin string CORS Origins string
cors_origins array List of CORS origins
deploy_to string Application path on the server
envars hash Hash of all environment variables on the application
environment string Application environment name (lowercase)
has_ha_proxy_load_balancer boolean Are you using a HAProxy load balancer?
letsencrypt_primary_address string Sets the address of the host that "owns" the Let's Encrypt certificate. Can then be used with the proxy_pass directive to serve SSL requests via other hosts.
load_balancer_address string Address of your load balancer
load_balancer_address string Address of your load balancer
maintenance_mode_active boolean Is the application in maintenance mode?
passenger boolean Is nginx running Passenger or a custom web server?
passenger_enterprise boolean Are you using Passenger enterprise?
passenger_location string Passenger location (Passenger only)
passenger_pool_max integer The maximum number of processes that Passenger will spawn. This value is derived from passenger_process_memory which can be set via the manifest file. See below for an explanation on how this is calculated.
passenger_supports_cgi_param boolean Does the current Passenger version support CGI param?
perfect_forward_secrecy boolean Is perfect forward secrecy enabled on the application?
red_http_to_https boolean Are you redirecting HTTP to HTTPS?
red_www boolean Are you redirecting traffic to www?
ruby_shell string /var/deploy/ruby_shell
server_address string Server address (IP or fqdn)
stack_supports_nginx_tcp_and_udp_reverse_proxy boolean Does your application support TCP and UDP reverse proxy?
supports_realip_module boolean Does your Nginx instance use the Real IP module?
supports_tcp_proxy boolean Does your NGINX version support TCP reverse proxy and load balancing?
supports_udp_proxy boolean Does your NGINX version support UDP reverse proxy and load balancing?
use_ruby_shell boolean Used internally
user_name string User name running the application process
websocket_support boolean Does this version of Nginx support websocket?
workers integer Number of CPU cores on the server

How passenger_pool_max is calculated

passenger_pool_max is a Cloud-66-specific variable that we use to dynamically set a value in Nginx for the native Passenger setting passenger_max_pool_size.

We calculate the value for passenger_pool_max as follows:

passenger_pool_max = ( server’s memory - reserved_server_memory ) / passenger_process_memory

…and this is rounded down to the nearest integer. So if your server has 4GB of free RAM and each process uses 600MB the your passenger_pool_max will be 6.

Nginx worker configuration

The following table specifies the number of workers configured for your Nginx based on the server resources (CPU cores) on each cloud.

Cloud provider Instance type Number of Workers
AWS
t1.micro 1
m1.small 1
m1.medium 2
m1.large 2
m1.xlarge 4
m3.medium 1
m3.large 2
m3.xlarge 4
m3.2xlarge 8
m2.xlarge 2
m2.2xlarge 4
m2.4xlarge 8
c1.medium 2
c1.xlarge 8
c3.large 2
c3.xlarge 4
c3.2xlarge 8
c3.4xlarge 16
c3.8xlarge 32
cc2.8xlarge 88
i2.xlarge 4
i2.2xlarge 8
i2.4xlarge 16
i2.8xlarge 32
cr1.8xlarge 88
hi1.4xlarge 35
hs1.8xlarge 35
cg1.4xlarge 33
g2.2xlarge 8
DigitalOcean
512MB - 1 CPU 1
1GB - 1 CPU 1
2GB - 2 CPU 2
4GB - 2 CPU 2
8GB - 4 CPU 4
16GB - 8 CPU 8
32GB - 12 CPU 12
48GB - 16 CPU 16
64GB - 20 CPU 20
96GB - 24 CPU 24
GCE
n1-standard-1 1
n1-standard-2 2
n1-standard-4 4
n1-standard-8 8
n1-standard-16 16
n1-highmem-2 2
n1-highmem-4 4
n1-highmem-8 8
n1-highmem-16 16
n1-highcpu-2 2
n1-highcpu-4 4
n1-highcpu-8 8
n1-highcpu-16 16
f1-micro 1
g1-small 1
Linode
Linode 1GB 1
Linode 2GB 2
Linode 4GB 4
Linode 8GB 6
Linode 16GB 8
Linode 32GB 12
Linode 48GB 16
Linode 64GB 20
Linode 96GB 20
Microsoft Azure
ExtraSmall 1
Small 1
Medium 2
Large 4
ExtraLarge 8
A5 2
A6 4
A7 8
A8 8
A9 16
STANDARD_D1 1
STANDARD_D2 2
STANDARD_D3 4
STANDARD_D4 8
STANDARD_D11 2
STANDARD_D12 4
STANDARD_D13 8
STANDARD_D14 16
Rackspace
512MB Standard Instance 1
1GB Standard Instance 1
2GB Standard Instance 2
4GB Standard Instance 2
8GB Standard Instance 4
15GB Standard Instance 6
30GB Standard Instance 8
3.75 GB Compute v1 2
7.5 GB Compute v1 4
15 GB Compute v1 8
30 GB Compute v1 16
60 GB Compute v1 32
1 GB General Purpose v1 1
2 GB General Purpose v1 2
4 GB General Purpose v1 4
8 GB General Purpose v1 8
15 GB I/O v1 4
30 GB I/O v1 8
60 GB I/O v1 16
90 GB I/O v1 24
120 GB I/O v1 32
15 GB Memory v1 2
30 GB Memory v1 4
60 GB Memory v1 8
120 GB Memory v1 16
240 GB Memory v1 32
1 GB Performance 2
2 GB Performance 2
4 GB Performance 4
8 GB Performance 8
15 GB Performance 4
30 GB Performance 8
60 GB Performance 16
90 GB Performance 24
120 GB Performance 32