Skip to main content

node.js and elastic beankstalk

AWS uses Nginx to proxy requests to node application. When you first deploy your app and try to load the site in a browser you may see an error - "502 Bad Gateway".

To troubleshoot, you may want to check node.js logs. You could either go to elastic beanstalk dashboard to get a most recent snapshot of logs or ssh to an ec2 instance to view a log file at /var/log/nodejs/nodejs.log .

In my case, I was getting an error - "Error: listen EADDRINUSE". I was starting a node server on 8080 but AWS was already running Nginx on the same port. (Note: To lookup ports in use type "sudo netstat -lnptu") .

I noticed that a node process was running on port 8081. So I updated my node.js server to listen on port 8081 and that fixed the problem. I could then request the site (just using the dns name, no port required in the url since it is routed automatically to 8081 internally by Nginx).

jfyi, when you use "git aws.push" to upload latest code to aws it is copied to this location on ec2 server - "/var/app/current".

Comments

Dmitry Fink said…
Do you have any idea what exactly they are doing with 8080 and where is it coming from? The port opened in security groups of the instance is 80, yet the nginx config file is using 8080. I couldn't figure out what exactly they were doing.

Popular posts from this blog

Creating no-reply@domain.com account in Postfix

If you wanted to send emails to users but did not want to receive any replies to the email, you would need to setup a no-reply@domain.com email account. These kind of email ids are useful when sending emails containing forgotten passwords or activation code. Below are the steps for creating such account in Postfix. 1. Identify the file containing alias for Postfix First, make sure the following line in the ALIAS DATABASE section of the /etc/postfix/main.cf is NOT commented out: alias_maps = hash:/etc/aliases 2. Create an alias that redirects messages to /dev/null Edit /etc/aliases and add following entry devnull: /dev/null 3. Create a virtual email id Edit /etc/postfix/virtual and add following entry no-reply@domain.com devnull 4. refresh postfix alias and postfix cache Execute following commands. (You may require root privileges) > newaliases > postfix reload

jupyter notebook execution error: "http://localhost:8889/tree?token=xxx" doesn’t understand the “open location” message

I got this error when I tried to launch jupyter notebook on a mac. It is not a fatal error. I could still go to browser directly and copy/paste the url manually. The error indicates that when the command automatically tried to launch a browser, it couldn't find the default browser in jupyter configuration file. The easy fix is to specify the browser. Here are the steps to do so; 1.   Open ~/.jupyter/jupyter_notebook_config.py in an editor.       If the file does not exist then you can create a default config file by typing the following command;       jupyter notebook --generate-config 2. Search for a word "browser" to locate a following line.     #c.NotebookApp.browser = ''     By default it is commented. You can uncomment it and use one of the following values depending on your browser preference.     # set default browser to chrome     c.NotebookApp.browser = 'chrome'     ...

.ssh/config: “Bad configuration option: UseKeychain” on Mac OS

After upgrading Mac OS to Mojave I started seeing this error when doing "git pull". I was able to follow the steps below as described here ; 1. open ssh config vi ~/.ssh/config 2. Add the following lines to ssh config to keep your configuration compatible with both new and old versions of openssh. IgnoreUnknown UseKeychain UseKeychain yes That fixed the issue for me. Try running git pull again.    More details about the issue are available here .