π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
brew install dnsmasqConfigure Dnsmasq to resolve *.localhost domains
First letβs check where our brew installation config files are:
$ brew --prefix
/opt/homebrewIn my case it lives at /opt/homebrew/etc/dnsmasq.conf
# Route all *.localhost addresses to localhost
address=/localhost/127.0.0.1
# Don't read /etc/resolv.conf or any other configuration files.
no-resolv
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-privRun 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
Was this helpful?