Skip to main content

Port forwarding with ELB in AWS vs NginX

< requirement >

input 1 : http://aaa1.testdomain.com
internal service 1 : http://localhost:3000

input 2 : http://aaa2.testdomain.com
internal service 2 : http://localhost:3001

< 1. AWS approach >

1. create LoadBalancers
cf. https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#LoadBalancers:
ㅇ create Load Balancer for 1st port
1. Define Load Balancer
Load Balancer name: aaa1-test
Load Balancer Port: 80
Instance Port: 3000
2. Configure Health Check
Ping Path: it's important!
3. Add EC2 Instances: Add EC2 Instances to Load Balancer
4. check out the domain and service
(1st Load Balancer's Description > DNS Name > A Record : ex) aaa1-test-1425011489.us-east-1.elb.amazonaws.com )
- test service : http://aaa1-test-1425011489.us-east-1.elb.amazonaws.com

ㅇ create Load Balancer for 2nd port
1. Define Load Balancer
Load Balancer name: aaa2-test
Load Balancer Port: 80
Instance Port: 3001
2. Configure Health Check
Ping Path: it's important!
3. Add EC2 Instances: Add EC2 Instances to Load Balancer
4. check out the domain and service
(2nd Load Balancer's Description > DNS Name > A Record : ex) aaa2-test-1425011489.us-east-1.elb.amazonaws.com )
- test service : http://aaa2-test-1425011489.us-east-1.elb.amazonaws.com

2. create route record sets
cf. https://console.aws.amazon.com/route53/home?region=us-east-1
Hosted zones > Create Hosted Zone
Domain Name: testdomain.com
ㅇ create domain for 1st Load Balancer
Hosted zones > Record Sets > create record set
name: aaa1.testdomain.com
cname: 1st Load Balancer's domain name ex) aaa1-test-1425011489.us-east-1.elb.amazonaws.com

ㅇ create domain for 2nd Load Balancer
Hosted zones > Record Sets > create record set
name: aaa2.testdomain.com
cname: 2nd Load Balancer's domain name ex) aaa2-test-1425011489.us-east-1.elb.amazonaws.com


< 2. Webserver approach - nginx >

sudo -i
apt-get update
apt-get install -y nginx
apt-get update


< Production >

* aws route 53 domain setting or get dns service
aaa1.testdomain.com. xxx.xxx.xxx.xxx  
aaa2.testdomain.com. xxx.xxx.xxx.xxx

/etc/nginx> sudo vi nginx.conf

    server {
        listen       80;
        server_name  aaa1.testdomain.com;
        location / {
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $remote_addr;
            proxy_pass http://localhost:3000;
            index  index.html;          
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       80;
        server_name  aaa2.testdomain.com;
        location / {
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $remote_addr;
            proxy_pass http://localhost:3001;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

$ sudo nginx
$ sudo nginx -s stop

Comments

Popular posts from this blog

Amazon RDS Blue/Green Deployments

In order to avoid some errors I experienced when proceeding as described in the official documentation, I describe what I did in order. 1) Modify parameters of source_database * error: Blue Green Deployments requires cluster parameter group has binlog enabled. RDS Parameter groups: source-params-group binlog_format => MIXED mysql> show global variables like 'binlog_format'; 2) Insert a row after rebooting the source database, to avoid this error. * error: Correct the replication errors and then switch over. Read Replica Replication Error - IOError: 1236, reason: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' => To Fix: You need to change the data in the source database. INSERT INTO dummy_table ( `favorite_id` , `favorite_order` , `user_id` , `board_id` ) VALUES ('100001', '1', '11111', '11111'); 3) Modify the param...

Fluentd for mysql in AWS

(0) preparation ulimit -n If your console shows 1024, it is insufficient. Please add following lines to your /etc/security/limits.conf file and reboot your machine. root soft nofile 65536 root hard nofile 65536 (1) install Fluentd // “Ubuntu 12.04 LTS / Precise” curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh /etc/init.d/td-agent start/stop/restart/status // test curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test /etc/init.d/td-agent stop chown: changing ownership of `/var/run/td-agent/td-agent.pid': Operation not permitted chown: changing ownership of `/var/run/td-agent': Operation not permitted  * Stopping td-agent td-agent                                                                                   ...

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 75...