Search code examples
amazon-web-servicesamazon-elastic-beanstalkamazon-linux-2

Increasing worker_connections of nginx on Beanstalk nodejs environment


I am trying to increase the number of possible worker_connections of my nginx on my Beanstalk nodejs server (Amazon Linux 2).
I followed the documentation and created a file .platform/nginx/conf.d/proxy.conf with this content:

worker_rlimit_nofile 65536;
events {
  worker_connections  32768;
}

When deploying I get the error: [emerg] "worker_rlimit_nofile" directive is not allowed here in /var/proxy/staging/nginx/conf.d/proxy.conf

When commenting this line I still get: [emerg] "events" directive is not allowed here in /var/proxy/staging/nginx/conf.d/proxy.conf:3


Solution

  • I think these are top level settings, and you have to overwrite main nginx.conf file. You do this by creating .platform/nginx/nginx.conf config file. In that case, you can remove .platform/nginx/conf.d/proxy.conf.

    You can try the following .platform/nginx/nginx.conf:

    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    user nginx;
    worker_processes auto;
    worker_rlimit_nofile 65536;
    error_log /var/log/nginx/error.log;                                      
    pid /run/nginx.pid;
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.         
    include /usr/share/nginx/modules/*.conf;
    events {
        worker_connections 32768;                                               
    }
    http {                                                                
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  /var/log/nginx/access.log  main;
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 4096;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        include /etc/nginx/conf.d/*.conf;
        server {
            listen       80;
            listen       [::]:80;
            server_name  _;
            root         /usr/share/nginx/html;
            # Load configuration files for the default server block.                   
            include /etc/nginx/default.d/*.conf;  
            error_page 404 /404.html;        
                location = /40x.html {       
            }
            error_page 500 502 503 504 /50x.html;                                      
                location = /50x.html {       
            }
        }
    }                                                                   
    

    If this does not work, you can ssh into your EB instance, check what is the actual, default nginx.conf (/etc/nginx/nginx.conf) for your EB environment, copy it, and use in .platform/nginx/nginx.conf.