Using curl to access a site running on the same server
Debugging network problems on a website can be a pain - there are many places things can go wrong causing an unhelpful error in your browser:
- Application itself
- Webserver
- Proxy
- Loadbalancer
- DNS
I recently setup a vagrant based application on a new machine which was working perfectly on another machine. Everything built and provisioned perfectly but the site was not accessible via my browser.
I had a feeling the webserver itself was ok because there were no errors in the logs but I wanted to prove this. I really wanted to load the site on the webserver itself to figure out if the webserver was working or the problem was elsewhere.
curl to the rescue!
But wait, I'm running multiple websites on this server so how to I make sure that nginx will serve the correct site?
Fortunately there is a curl argument for this, --resolve
which allows you
to map a domain to an IP for curl to use:
curl https://www.mysite.com --resolve 'www.mysite.com:127.0.0.1' -k
The -k
is required for a self signed SSL certificate.
Using this showed me the webserver was indeed working fine, and the problem
turned out to be a typo in the /etc/hosts
file on my host. Whoops...