444 Code: the Server Closed the Connection Without a Response
A site on nginx decided not to answer the request and simply closed the connection. Your program will not see a 444 code, only an empty response.
Updated · Prokso editorial team
- A site on nginx closed the connection without answering, so your program sees an empty response
- Most often the site name is unknown: empty Host or an IP instead of a domain
- Connect by domain, not by the server IP, and use the right scheme
What the error means
444 is a non-standard code of the nginx web server. According to the nginx documentation, it closes the connection without sending response headers. The site owner sets it in the configuration for requests they do not want to serve.
This code is written only to the site server's log. The client does not receive it: the Chrome browser shows ERR_EMPTY_RESPONSE, curl prints Empty reply from server, and libraries report that the connection was closed without a response.
The nginx documentation has a typical example: a default server with return 444 for requests with an unknown site name. So 444 often means the request arrived at a site other than the one the server expected.
Causes
- An unknown site name in the request. The Host header is empty, contains an IP instead of a domain, or names a domain that is not on this server.
- A rule set by the site owner. The server closes requests of a certain kind, from certain addresses or without the required headers, without a response.
- The request does not match the site's protocol. For example, a plain HTTP request to a port where the site expects HTTPS.
- Rate limiting. Some owners configure 444 instead of 429 for requests over the limit.
How to fix it
- Check the URL: connect by domain, not by the server IP, and with the right scheme, http:// or https://.
- Make sure the program sends a Host header with the same domain as in the URL.
- Open the same page in a browser without the proxy. If the response is empty there too, the site is configured this way for everyone.
- Lower the request rate and the number of threads to this site, see also the 429 error.
- If you need access for work and the cause is the site's rules, contact the site owner. Do not try to get around such rules: the Prokso acceptable use policy forbids getting around restrictions a site has imposed.
How to check that it works
Open My IP through the same proxy. If the page opens, the proxy works, and the empty response comes from the specific site.
Two-minute diagnosis
First paste the line into the proxy checker. If the proxy works there, the cause is in your app or its settings. If not, test the line from a terminal:
curl -v -x "http://USERNAME:PASSWORD@gw.prokso.com:823" https://api.ipify.org
- A
< HTTP/1.1 407line right afterCONNECTmeans the proxy answered. The name after the code, for exampleNO_USER, points to the cause. - The proxy answered
CONNECTwith 200 and then another code arrived - the proxy works, and that answer came from the website. - No answer at all, only a timeout - the connection never reached the proxy: check the host, port and network.
FAQ
Why don't I see the 444 code in my program?
Because the server sends nothing: no code, no headers. The 444 code is visible only in the site's log, and the program sees a closed connection.
Is it the proxy that closes the connection?
Prokso proxy errors come with a code and a reason name, for example 407 or 502. An empty response without a code most often comes from the site's server.
Is traffic charged if there is no response?
What actually passed through the proxy is charged: your request and the service exchange while connecting. Without a response, that is a very small volume.
Other proxy errors
Residential $1.59, mobile $2.50, datacenter $0.65 per GB
Sign up in a minute, get access right after payment.