upstream app_servers { server 182.10.0.3:9000; server 182.10.0.21:9000; server 182.10.0.22:9000; server 182.10.0.23:9000; server 182.10.0.24:9000; # server 182.10.0.24:9000 max_conns=200; # queue 10 timeout=30s; } limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; server { listen 80; server_name api.yourdomain.com; access_log api-yourdomain.access.log; # Timeout for closing keep-alive connections. keepalive_timeout 10; # Enable gzip compression. gzip on; gzip_http_version 1.1; gzip_vary on; gzip_comp_level 6; gzip_proxied any; gzip_buffers 16 8k; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; location / { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; client_max_body_size 50M; limit_req zone=one burst=5; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_redirect off; # Go to next upstream after if server down. proxy_next_upstream error timeout http_500 http_502 http_503 http_504; proxy_connect_timeout 5s; # Gateway timeout. # proxy_read_timeout 20s; proxy_send_timeout 20s; proxy_buffers 256 16k; proxy_buffering off; proxy_buffer_size 16k; proxy_read_timeout 20s; proxy_pass http://app_servers; } location /subscriptions { # prevents 502 bad gateway error proxy_buffers 8 32k; proxy_buffer_size 64k; # redirect all HTTP traffic to localhost:9000; proxy_pass http://app_servers/subscriptions; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-NginX-Proxy true; # enables WS support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_buffering off; proxy_read_timeout 999999999; } if ($scheme = http) { return 301 https://$server_name$request_uri; } listen 443; ssl on; ssl_certificate /usr/share/certs/cert.pem; ssl_certificate_key /usr/share/certs/cert.key; # Serve static files without going through upstreams #location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) { #root /home/richard/www/sites/domain.tld/public; #access_log off; #expires 1h; }