1. ホーム
  2. nginx

[解決済み】Docker Nginxが停止しました。[emerg] 1#1: ホストがアップストリームで見つかりません。

2022-02-18 21:15:45

質問

ECSサーバーでdocker-nginxを動かしています。が表示され、nginxのサービスが突然停止してしまいました。 proxy_pass の1つが到達不能になりました。エラーは以下の通りです。

[emerg] 1#1: host not found in upstream "dev-example.io" in /etc/nginx/conf.d/default.conf:988

私の設定ファイルは以下の通りです。

 server {
       listen      80;
       server_name     test.com;
       location / {
          proxy_pass         http://dev-exapmle.io:5016/;
          proxy_redirect     off;

          ##proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

          client_max_body_size       10m;
          client_body_buffer_size    128k;

          proxy_connect_timeout      90;
          proxy_send_timeout         90;
          proxy_read_timeout         90;

          proxy_buffer_size          4k;
          proxy_buffers              4 32k;
          proxy_busy_buffers_size    64k;
          proxy_temp_file_write_size 64k;
       }
}

server {
   listen       80 default_server;
   server_name  localhost;

   #charset koi8-r;
   #access_log  /var/log/nginx/log/host.access.log  main;

   location / {
      root   /usr/share/nginx/html;
      index  index.html index.htm;
   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
      root   /usr/share/nginx/html;
   }
}

設定ファイルに多くのサーバーを登録していますが、1つのサーバーがダウンしてもnginxが動作している必要があります。何か解決する方法はありますか?

この問題を解決するための提案があれば、お願いします。

解決するには?

サイトがダウンしたときに Nginx がクラッシュしないように、以下のように resolver ディレクティブをインクルードしてください。

 server {
       listen                80;
       server_name           test.com;
       location / {
          resolver           8.8.8.8;
          proxy_pass         http://dev-exapmle.io:5016/;
          proxy_redirect     off;
 ...

警告! パブリックDNSを使用すると、DNSリクエストがスプーフィングされる可能性があるため、バックエンドにセキュリティリスクを生じます。もしこれが問題であれば、リゾルバを安全なDNSサーバに向けるべきです。