I have always been a fan of Nginx, but with Nginx, I always have to buy SSL for the domain configuration, with HTTPS. And, when it comes to Wildcard SSL, it costs more than the normal SSL.
Recently, I have been working with a server architect, and I came to know about Caddy - The Ultimate Server, and it's fascinating to see how it can obtain and renew the SSL certificates, automatically.
It provides the same features as Nginx but with fewer configurations and security has been added automatically too.
It supports Compression, Virtual file systems, TLS configurations, etc.
How to configure it in AWS: EC2
I created an EC2 instance, with AMI ( Amazon Linux v3 ) as an image.
After creating an instance, you can connect it either via SSH or directly through the EC2, and then you have to enter the following commands to install it
sudo yum -y install yum-plugin-copr
sudo yum -y copr enable @caddy/caddy epel-8-$(arch)
sudo yum -y install caddy
This will install the caddy server in the EC2 instance.
Creating the CaddyFile
After installing the caddy in your EC2 instance, you have to create a Caddyfile, in /etc/caddy folder.
To create the Caddyfile, you have to enter the below command.
sudo nano /etc/caddy/Caddyfile
And, after creating the file, you have to enter the following configuration
domain_name {
reverse_proxy Ip_address:port
}
For example, I have deployed the frontend and backend code in the EC2 and now I want to configure the caddy for the frontend and backend, by attaching the domain name to it.
app.aceinterview.co {
reverse_proxy 3.24.60.134:3000
}
api.aceinterview.co {
reverse_proxy 3.24.60.145:8000
}
As you can see in the example, I configured two different domains, one for the frontend and the other for the backend.
Run the caddy server
First, you have to enable the caddy server.
sudo systemctl enable caddy
The above step will create the symlink of the caddy.
Then, you have to start the caddy
sudo systemctl start caddy
Hurray!. Your caddy server configuration is completed. Now, you got reverse proxy, SSL configuration, etc.
More commands to handle caddy in EC2.
To stop the caddy server
sudo systemctl stop caddy
If you change something in Caddyfile
, then you have to restart it to take effect.
sudo systemctl restart caddy
Today I have highlighted the basic setup of caddy, and this setup will do the most of the job. For more information, you can directly checkout the caddy server website https://caddyserver.com/