🌐HTTPS & Subdomains
Since we’re going to start using cross-subdomain authentication it’s pretty important that we can test both https://app.cal.localhost
and https://cal.localhost
locally. This is a quick guide on how can we achieve this setup locally for development purposes.
Prerequisites
Caddy Server
Dnsmasq
Install Dnsmasq
Configure Dnsmasq to resolve *.localhost domains
First let’s check where our brew installation config files are:
In my case it lives at /opt/homebrew/etc/dnsmasq.conf
Run Dnsmasq now and anytime we restart the system
Make macOS use our local DNS server (Dnsmasq) for .localhost addresses
Create the following file at /etc/resolver/localhost
:
With that, you can go to subdomain.localhost
in your browser and it will point to localhost
. So if your app is running on port 3000
, simply go to subdomain.localhost:3000
.
But what if you're looking for the following setup?
This we can solve with Caddy which is a super-awesome simple HTTP server!
Install Caddy
Configure Caddy
In my case (because my brew --prefix
is /opt/homebrew
), my global Caddyfile is at /opt/homebrew/etc/Caddyfile
. This file we can setup to act as a simple reverse proxy for our individual apps running on different ports:
Run Caddy now and every time your system restarts
That's it! If you change your Caddyfile, you will need to brew services restart caddy
.
Setup our your environment variables
Run website and web app at the same time
Go to the website or web app domain
You should be able to go to https://app.cal.localhost
and https://cal.localhost
successfully 🙌
Thanks to Max 's article Local subdomains on macOS with Dnsmasq and Caddy for making it easy to get started with Dnsmasq.
Last updated