skip to Main Content

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

2

Answers


  1. 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.

    Login or Signup to reply.
  2. @marcin’s answer above is correct. Making updates to worker_connections requires modification via the .platform/nginx/nginx.conf file. For other’s reference, as of July 2021, AWS is using the following as a default for nginx.conf on Elastic Beanstalk v2 and Amazon Linux 2:

    #Elastic Beanstalk Nginx Configuration File
    
    user                    nginx;
    error_log               /var/log/nginx/error.log warn;
    pid                     /var/run/nginx.pid;
    worker_processes        auto;
    worker_rlimit_nofile    131435;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        include       conf.d/*.conf;
    
        map $http_upgrade $connection_upgrade {
            default     "upgrade";
        }
    
        server {
            listen        80 default_server;
            access_log    /var/log/nginx/access.log main;
    
            client_header_timeout 60;
            client_body_timeout   60;
            keepalive_timeout     60;
            gzip                  off;
            gzip_comp_level       4;
            gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    
            # Include the Elastic Beanstalk generated locations
            include conf.d/elasticbeanstalk/*.conf;
        }
    }
    

    Simply add the above file to .platform/nginx/nginx.conf and modify the worker_connections value to the desired value. AWS docs are lacking on this currently, but I’ve requested they make further updates.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search