DEV Community

Discussion on: Extend nginx/Apache Proxy Configurations on AWS ElasticBeanstalk

Collapse
 
harjotscs profile image
Harjot Singh

I am using nginx and my web app platform is node js

Thread Thread
 
david_ojeda profile image
David Ojeda

Are you using .ebextensions already or is this the first file you are creating like this?

Where are you creating the .ebextensions directory?

Make sure your dir structure looks like this:
dir structure

Thread Thread
 
harjotscs profile image
Harjot Singh

I am creating .ebextensions folder for the first time my directory structure is absolutely similar to this except i didn't added elasticbeanstalk directory except everything is same
A picture of my structure is attatched
dev-to-uploads.s3.amazonaws.com/i/...

Thread Thread
 
david_ojeda profile image
David Ojeda

I'm not sure what's going on, everything looks good.

You can try these steps instead: docs.aws.amazon.com/elasticbeansta...

Thread Thread
 
harjotscs profile image
Harjot Singh

Thanks I will try these steps

Thread Thread
 
rahul689 profile image
rahul689

Hello,
Did you able to solved the problem?
I am troubling with same.

Thread Thread
 
harjotscs profile image
Harjot Singh

No I tried different methods but nothing worked
but i can tell you about a improvisation/hack which will work in changing your default nginx config values connect to your instance via putty or ssh terminal like git bash or online terminal then navigate to /etc/nginx/conf.d using cd command inside conf.d directory create a new file in the form anyname.conf paste your new config value and restart nginx.

But there is an issue in this this will only work if you use single instance otherwise after sometime when your load balancer will change/replace the instance to reduce load on the servers your nginx values will be reset to default

In case you find out any other better method please let me know i am also searching for the same

Thread Thread
 
rahul689 profile image
rahul689

Thanks for sharing the hack. I am also running the system by hack. But this is not proper solution for autoscale.
@david
Is there anything settings on IAM role permission?
Although i am using the default role.
Thanks in advance.

Thread Thread
 
david_ojeda profile image
David Ojeda

Hey there!

Have you tried using the files command on .ebextension? Something like this:

files:
  /etc/nginx/conf.d/proxy.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      upstream nodejs {
        server 127.0.0.1:5000;
        keepalive 256;
      }

      server {
        listen 8080;

        if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
            set $year $1;
            set $month $2;
            set $day $3;
            set $hour $4;
        }
        access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
        access_log  /var/log/nginx/access.log  main;

        location / {
            proxy_pass  http://nodejs;
            proxy_set_header   Connection "";
            proxy_http_version 1.1;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        gzip on;
        gzip_comp_level 4;
        gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        location /static {
            alias /var/app/current/static;
        }

      }

  /opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh:
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/bin/bash -xe
      rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
      service nginx stop 
      service nginx start

container_commands:
  removeconfig:
    command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"

It's documented here. It's another way to add custom files to your instances when deploying new versions.

Thread Thread
 
rahul689 profile image
rahul689

Hello friend,
Thanks for your help. My problem was hierarchy.

  1. .ebextension should contain in root application directory. My application was in sub directory. And was put .ebextension to subdirectory. :(

Once take back .ebextension to main root directory the problem was resolved.

Thread Thread
 
david_ojeda profile image
David Ojeda

Yeeeei! I'm glad you worked it out.

I might as well add that reminder of the root directory to the post.

Thanks a lot for getting back here!