I am using AWS lightsail. I cloned my git repository to my htdocs and opened port 3000 on my networking ipv4 firewall. What im trying to do is load my node site with my aws static IP. It currently works when I specify the specific port like: 98.222.124.4:3000 but I wanted it to load the site without having to specify the port so I followed the steps found here https://docs.bitnami.com/ibm/infrastructure/nodejs/administration/create-custom-application-nodejs/ under "Create A Custom Virtual Host" but the specified method is not working. I still need to specify the port in order for the site to load. What I basically did was edit the documentRoot and directory paths to my repositories location then restarted apache but this didn't let me access the site without the port. Where did I go wrong. How can I load the site without specifying a port in the url?
Asked
Active
Viewed 81 times
1 Answers
0
It took me a minute to land on this solution but the only method that worked was this:
First try this after installing iptables:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
What you basically did is forward all port 80 traffic to port 3000. Then check and see if site is loading without specifying the port in URL. If it works go to step 2.
Step 2:
open the /etc/rc.local
file with vim or other editor and add
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
to the file. Notice sudo
is not included because the file already runs as root. We are implementing step 2 because we want the port redirected when the machine boots up.

seriously
- 121
- 6
-
1Why not just have Node listen to port 80? – ceejayoz Aug 31 '22 at 04:37
-
@ceejayoz I tried but I get permission denied when I listen on port 80 in node even though I opened port 80 in lightsails firewall – seriously Aug 31 '22 at 06:17
-
That's because you're not root. You can use something like supervisor to run Node, or reverse-proxy with something like nginx. – ceejayoz Aug 31 '22 at 16:29