Nginxのリバースプロキシで、プロキシ先にドメインを含める場合は、単純に行うとNginxがDNSをキャッシュしてしまって、プロキシ先のIPが変わった場合に障害になります。
- Nginx設定時にvalid=5sを加える
- Nginx設定時に変数にURLを一旦持たせる
- プロキシ先のDNSレコードのTTLを5秒程度に短くする
例の場合はhoge.example.netのTTLを5にする
この3点が必要
server { server_name www.example.com; listen 443 ssl; access_log /dev/stdout ltsv if=$loggable; root /var/www/html; ssl_certificate /etc/nginx/ssl/default/server.crt; ssl_certificate_key /etc/nginx/ssl/default/server.key; ssl_protocols TLSv1.3 TLSv1.2; ssl_prefer_server_ciphers on; proxy_set_header hostname hoge; ## ルートディレクトリの取り扱い location = / { resolver 172.31.0.2 8.8.8.8 valid=5s ipv6=off; # VPCのネットワークが172.31.0.0/16の場合、+2する proxy_ssl_server_name on; set $url https://hoge.example.net/web/portal/1/event/2; # result ... https://hoge.example.net/web/portal/1/event/2/ proxy_pass $url$uri$is_args$args; } ## serviceで始まる場合 location ^~ /service/ { resolver 172.31.0.2 8.8.8.8 valid=5s ipv6=off; proxy_ssl_server_name on; set $url https://hoge.example.net/web/portal/1/event/2; # result ... https://hoge.example.net/web/portal/1/event/2/service/ proxy_pass $url$uri$is_args$args; } (略) }