Linux

Nginx リバースプロキシにてドメインを変数にする場合の設定例

nginx

 

 

Nginxのリバースプロキシで、プロキシ先にドメインを含める場合は、単純に行うとNginxがDNSをキャッシュしてしまって、プロキシ先のIPが変わった場合に障害になります。

  1. Nginx設定時にvalid=5sを加える
  2. Nginx設定時に変数にURLを一旦持たせる
  3. プロキシ先の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;
  }

(略)

}

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)