nginx – no resolver defined to resolve s3

Помилка

Під час міграції фронта (nginx) з стійки в AWS зіткнувся з проблемою, маючи location:

    location /file {
      internal;
      set  $reproxy $upstream_http_x_reproxy_url;
      proxy_pass $reproxy;
      proxy_buffering off;
      proxy_hide_header Content-Type;
      expires 1M;
    }

перестав віддавати статику, тобто переходячи за певним посиланням отримував 502 error.

В /var/log/nginx/error.log побачив наступне:

2022/07/11 13:17:58 [error] 27647#27647: *29956 no resolver defined to resolve *******-static-***.s3.eu-central-1.amazonaws.com, client: ***.22.**.75, server: **.test.*****.com, request: "HEAD /files/docker/604c743.png?v=44

Рішення

В location /file додаємо параметр resolver в якості якого додаємо IP DNS AWS VPS (для прикладу 10.1.20.2):

    location /file {
      internal;
      resolver 10.1.20.2;
      set  $reproxy $upstream_http_x_reproxy_url;
      proxy_pass $reproxy;
      proxy_buffering off;
      proxy_hide_header Content-Type;
      expires 1M;
    }

Звісно якщо всі vhosts використовують даний локейшен, тоді варто параметр resolver 10.1.20.2; вказати в nginx.conf.

Перечитуємо конфігурацію:

# перевірка синтаксису
nginx -t

# перечитуємо коніфгурацію nginx
systemctl reload nginx
Click to rate this post!
[Total: 2 Average: 5]