nginx forward proxy config is causing "upstream server temporarily disabled while connecting to upst

Publish date: 2024-05-19

I want to set up nginx as a forward proxy - much like Squid might work.

This is my server block:

 server { listen 3128; server_name localhost; location / { resolver 8.8.8.8; proxy_pass http://$http_host$uri$is_args$args; } } 

This is the curl command I use to test, and it works the first time, maybe even the second time.

curl -s -D - -o /dev/null -x "http://localhost:3128" http://storage.googleapis.com/my.appspot.com/test.jpeg 

The corresponding nginx access log is

172.23.0.1 - - [26/Feb/2021:12:38:59 +0000] "GET http://storage.googleapis.com/my.appspot.com/test.jpeg HTTP/1.1" 200 2296040 "-" "curl/7.64.1" "-" 

However - on repeated requests, I start getting these errors in my nginx logs (after say the 2nd or 3rd attempt)

2021/02/26 12:39:49 [crit] 31#31: *4 connect() to [2c0f:fb50:4002:804::2010]:80 failed (99: Address not available) while connecting to upstream, client: 172.23.0.1, server: localhost, request: "GET http://storage.googleapis.com/omgimg.appspot.com/test.jpeg HTTP/1.1", upstream: "http://[2c0f:fb50:4002:804::2010]:80/my.appspot.com/test.jpeg", host: "storage.googleapis.com" 2021/02/26 12:39:49 [warn] 31#31: *4 upstream server temporarily disabled while connecting to upstream, client: 172.23.0.1, server: localhost, request: "GET http://storage.googleapis.com/my.appspot.com/test.jpeg HTTP/1.1", upstream: "http://[2c0f:fb50:4002:804::2010]:80/my.appspot.com/test.jpeg", host: "storage.googleapis.com" 

What might be causing these issues after just a handful of requests? (curl still fetches the URL fine)

1 Answer

The DNS resolver was resolving to both IPV4 and IPV6 addresses. The IPV6 part seems to be causing an issue with the upstream servers.

Switching it off made those errors disappear.

 resolver 8.8.8.8 ipv6=off; 
1

ncG1vNJzZmirpJawrLvVnqmfpJ%2Bse6S7zGiorp2jqbawutJobW9raGt%2BdIWOp56ipqhis7C%2B1pqpnWWgp7y5xYycpqeemZx6qr%2BMnJiuq5mjtG7Bz6yrq52Ronq0sdGvnKtlpJq6sbvRmqmipKlisaq%2FwJujnpxdrLWquA%3D%3D