user nginx; worker_processes auto; # Matches number of available CPU cores error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; # Optimize for production worker_rlimit_nofile 65535; events { worker_connections 4096; use epoll; multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; # Logging format log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' 'rt=$request_time uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time"'; access_log /var/log/nginx/access.log combined; # Performance sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 75; keepalive_requests 1000; types_hash_max_size 2048; server_tokens off; # Don't leak nginx version # Rate limiting zone (used in fashionistar.conf) limit_req_zone $binary_remote_addr zone=api_limit:10m rate=60r/m; limit_conn_zone $binary_remote_addr zone=conn_limit:10m; limit_conn conn_limit 20; # Buffer sizes client_body_buffer_size 128k; client_max_body_size 50m; client_header_buffer_size 1k; large_client_header_buffers 4 4k; output_buffers 1 32k; postpone_output 1460; # Proxy settings proxy_headers_hash_max_size 512; proxy_headers_hash_bucket_size 128; include /etc/nginx/conf.d/*.conf; }