1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

nginx起動時に転送先が名前解決できなくてもエラーにしない方法

Last updated at Posted at 2023-02-02

概要

nginxは、起動時に転送先の名前解決を行います。
名前解決ができない場合、正常に起動しません。

しかし、proxy_passが複数設定されている場合、そのうちの1つでも名前解決できない(起動していない)とnginxが起動しないのは不便です。
locationの書き方を工夫することで、この状況を回避することができます。

回避方法

変数を使用する

proxy_passで設定する値に変数を使用します。
これにより、nginxは起動時に名前解決を行いません。

resolverを使用する

変数を使用する場合、resolverの使用も必要になります。

dockerの場合、resolverの値は
127.0.0.11
です。

GKEの場合は
kube-dns.kube-system.svc.cluster.local
です。

記述例

 location /myservice-1 {
    resolver kube-dns.kube-system.svc.cluster.local;
    set $path http://myservice-1.namespace.svc.cluster.local:8888; 
    proxy_pass $path;     
 }

参考

https://sandro-keil.de/blog/let-nginx-start-if-upstream-host-is-unavailable-or-down/
https://serverfault.com/questions/876308/kubernetes-dns-resolver-in-nginx
https://www.nginx.com/blog/dns-service-discovery-nginx-plus/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?