1

I need to edit nginx configuration of an AWS ELB environment so that it accepts payload(post request body) up to 50MB.

The default nginx payload limit is 1MB.

I researched many questions and answers, and found this: https://stackoverflow.com/a/40745569

But I'm not sure how to access the nginx configuration file behind the ELB environment.

I also tried with this AWS doc: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-nginx.html

But I still couldn't get responses from post requests with larger payload than 1M. (The server is a Node.js server)

So, please let me know how to change the max payload size of nginx from the default 1M to 50MB. Please note that the nginx is working on an AWS ELB environment.

Appendix 1: Here's the .ebextensions/nginx/nginx.conf file code I used:

user                    nginx;
error_log               /var/log/nginx/error.log warn;
pid                     /var/run/nginx.pid;
worker_processes        auto;
worker_rlimit_nofile    33282;

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;
      root /var/app/current/public;

      location / {
      }

      location /api {
          proxy_pass          http://127.0.0.1:5000;
          proxy_http_version  1.1;

          proxy_set_header    Connection          $connection_upgrade;
          proxy_set_header    Upgrade             $http_upgrade;
          proxy_set_header    Host                $host;
          proxy_set_header    X-Real-IP           $remote_addr;
          proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
      }

      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;

      # Include the Elastic Beanstalk generated locations
      include conf.d/elasticbeanstalk/01_static.conf;
      include conf.d/elasticbeanstalk/healthd.conf;

      client_max_body_size 100M; #100mb
  }

  client_max_body_size 100M; #100mb
}

Appendix 2. I already added these 2 lines to the Node.js Express app:

app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
David Roman
  • 363
  • 3
  • 11

0 Answers0