diff --git a/Procfile b/Procfile index 3c846d89a..de71bdf77 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: ruby -run -e httpd -- -p $PORT build/ +web: bin/start-nginx-solo diff --git a/app.json b/app.json index 07357db42..27b4ee82b 100644 --- a/app.json +++ b/app.json @@ -8,6 +8,9 @@ "buildpacks": [ { "url": "heroku/nodejs" + }, + { + "url": "https://github.com/heroku/heroku-buildpack-nginx" } ] } diff --git a/config/nginx.conf.erb b/config/nginx.conf.erb new file mode 100644 index 000000000..fce0ac2f6 --- /dev/null +++ b/config/nginx.conf.erb @@ -0,0 +1,39 @@ +daemon off; +# Heroku dynos have at least 4 cores. +worker_processes <%= ENV['NGINX_WORKERS'] || 4 %>; + +events { + use epoll; + accept_mutex on; + worker_connections <%= ENV['NGINX_WORKER_CONNECTIONS'] || 1024 %>; +} + +http { + gzip on; + gzip_comp_level 2; + gzip_min_length 512; + gzip_proxied any; # Heroku router sends Via header + + server_tokens off; + + log_format l2met 'measure#nginx.service=$request_time request_id=$http_x_request_id'; + access_log <%= ENV['NGINX_ACCESS_LOG_PATH'] || 'logs/nginx/access.log' %> l2met; + error_log <%= ENV['NGINX_ERROR_LOG_PATH'] || 'logs/nginx/error.log' %>; + + + include mime.types; + default_type application/octet-stream; + sendfile on; + + # Must read the body in 5 seconds. + client_body_timeout <%= ENV['NGINX_CLIENT_BODY_TIMEOUT'] || 5 %>; + + server { + listen <%= ENV["PORT"] %>; + server_name _; + keepalive_timeout 5; + client_max_body_size <%= ENV['NGINX_CLIENT_MAX_BODY_SIZE'] || 1 %>M; + + root /app/build; # path to your app + } +}