From Code to the Cloud:
A Step-by-Step Guide to Deploying Your Node.js App on AWS EC2 II
The part one dealt with the following:
- Setting up an AWS account
- Creating an EC2 instance
- Installing Node.js and NPM
- Creating a simple Node.js app
- Installing and configuring PM2
- Using SSH to connect to your EC2 instance
- Deploying your app to the EC2 instance
Read the part one here.
In this part, we will cover the following:
🎯 Using Nginx as a reverse proxy
🎯 Setting a subdomain for your app
🎯 Configuring SSL using certbot
Install the Nginx reverse proxy
ssh into your EC2 instance
ssh -i "your.pem" ubuntu@<your-ec2>
sudo su - # to get root access
Install nginx
sudo apt-get update
sudo apt-get install nginx
check if nginx is installed
nginx -v #nginx version: nginx/1.18.0 (Ubuntu)
start nginx
sudo service nginx start
check if nginx is running
sudo service nginx status
Configure Nginx as a reverse proxy
Go to the nginx configuration file
vi /etc/nginx/sites-available/default
Add the following lines to the file
server {
listen 80;
server_name your-domain.com; # replace with your domain name
location / {
proxy_pass http://localhost:5000; # replace with your app's port
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Save and exit the file
:wq
Test the configuration
sudo nginx -t
Restart nginx
sudo service nginx restart
Go the Route 53 and add a new record
- Create a new record and add the public IP address of your server
Installing Core from Snap
This is a snap package that provides the core functionality of snapd and the snap command-line tool. It is required to install other snaps.
sudo snap install core;
sudo snap refresh core
Remove Certbot if it's already installed
sudo apt remove certbot
Install Certbot
sudo snap install --classic certbot
Create a symbolic link
sudo ln -s /snap/bin/certbot /usr/bin/certbot
change the following lines to the server block
server {
listen 80;
server_name mysubdomain.com; # replace with your domain name
location / {
proxy_pass http://localhost:5000; # replace with your app's port
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Check status and reload nginx
sudo nginx -t
sudo systemctl reload nginx
Run Certbot (obtain free ssl)
sudo certbot certonly --nginx -d mysubdomain.com
Verify certbot renewal
sudo systemctl status snap.certbot.renew.service
Enable automatic renewal
sudo certbot renew --dry-run
Conclusion
By following these steps, you can easily set up a subdomain on your server and obtain a free SSL certificate using Certbot. This will help you secure your website and improve its performance.
Top comments (0)