Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

curl Failed to connect to localhost port 80

Tags:

curl

nginx

My host's file maps 127.0.0.1 to localhost.

$ curl -I 'localhost' curl: (7) Failed to connect to localhost port 80: Connection refused 

And then

$ curl -I 127.0.0.1 HTTP/1.1 200 OK Server: nginx/1.2.4 Date: Wed, 09 Apr 2014 04:20:47 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 23 Oct 2012 21:48:34 GMT Connection: keep-alive Accept-Ranges: bytes 

In my host's file I have

127.0.0.1   localhost 

It appears that the curl command fails to recognize entries in /etc/hosts. Can someone explain why?

update: I've yet to try this but I've discovered you can configure nginx to respond to ipv4 and ipv6

like image 946
lfender6445 Avatar asked Apr 09 '14 04:04

lfender6445


People also ask

Can I cURL localhost?

0, curl now treats the host name “localhost” specially and will use an internal “hard-coded” set of addresses for it – the ones we typically use for the loopback device: 127.0. 0.1 and ::1. It cannot be modified by /etc/hosts and it cannot be accidentally or deliberately tricked by DNS resolves.

Can't connect to localhost connection refused?

What Is the Localhost Refused to Connect Error? The localhost simulates a web server running on your computer. When the “localhost refused to connect” error appears, it is likely due to misconfigured port. Other common reasons include insufficient permissions and the Apache webserver not running properly.

What does Connection refused mean in cURL?

What does cURL connection refused really mean? "Connection Refused" is a generic error message, it means that the connection to the server has not been successfully made.


2 Answers

Since you have a ::1 localhost line in your hosts file, it would seem that curl is attempting to use IPv6 to contact your local web server.

Since the web server is not listening on IPv6, the connection fails.

You could try to use the --ipv4 option to curl, which should force an IPv4 connection when both are available.

like image 125
Joachim Isaksson Avatar answered Sep 22 '22 21:09

Joachim Isaksson


If anyone else comes across this and the accepted answer doesn't work (it didn't for me), check to see if you need to specify a port other than 80. In my case, I was running a rails server at localhost:3000 and was just using curl http://localhost, which was hitting port 80.

Changing the command to curl http://localhost:3000 is what worked in my case.

like image 23
sixty4bit Avatar answered Sep 23 '22 21:09

sixty4bit