04 декабря 2020

NGINX. Фиксим "connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream"

    Несколько недель тому назад я заметил, что у одного из наших заказчиков NGINX спамит в error.log ошибки начинающиеся с "connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream...":
2020/11/20 19:47:24 [error] 8560#14660: *1247 connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream, client: 111.111.111.111, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "https://XYZ.XYZ.XYZ.XYZ:3000/favicon.ico", host: "domain", referrer: "https://domain/"
2020/11/20 19:47:59 [error] 8560#14660: *1247 connect() failed (10061: No connection could be made because the target machine actively refused it) while connecting to upstream, client: 111.111.111.111, server: , request: "GET /ru/search?cs=N4I...
где XYZ.XYZ.XYZ.XYZ – это IP адрес их сайта, а domain – его доменное имя.
    Я где-то читал, что иногда программы могут избавляться от глюков если у них в настройках вместо "localhost" указать "127.0.0.1". Так и получилось. В одной из строк nginx.conf я сделал подобную замену:
...
server {
...
	location / {
		proxy_http_version 1.1;
		proxy_redirect off;
   			proxy_set_header Host $host;
   			proxy_set_header Upgrade $http_upgrade;
   			proxy_set_header Connection "upgrade";
		proxy_pass https://127.0.0.1:3000;
	}

	location /api/ {
		proxy_http_version 1.1;
		proxy_redirect off;
   			proxy_set_header Host $proxy_host;
   			proxy_set_header Upgrade $http_upgrade;
   			proxy_set_header Connection "upgrade";
		proxy_pass https://XYZ.XYZ.XYZ.XYZ:4443;
	}
}
...
и ошибка больше не появляется.

1 комментарий: