Nginx proxy_redirect の off とは?

ショコラ
ショコラ

Nginx proxy_redirect の off とは?

リバースプロキシのバックエンドへの通信で使用する。
「default」だと proxy_pass のホストと location が使われる。「off」だとリクエストのまま。
自分の使い方は基本「off」。

久しぶりにリバースプロクシの設定をした(リバースプロキシの前にもう1つリバースプロキシを設置した)。そしたら、バックエンドへのアクセスが、proxy_pass のホスト名のホストになってしまった。そういえば、バックエンドの http でのアクセスにも proxy_redirect off が必要だったというお話です。

もっさん先輩
もっさん先輩
server
{
  listen 80;
  server_name answorz.com;

 #if ($http_x_forwarded_proto != https) {
 #  rewrite ^(.*)$ https://answorz.com$1 permanent;
 #}

  proxy_redirect off;
  proxy_set_header Host               $host;
  proxy_set_header X-Forwarded-Host   $host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Real-IP          $remote_addr;
  proxy_set_header X-Forwarded-For    $remote_addr;
  proxy_set_header X-Forwarded-Proto  $scheme;
  proxy_http_version 1.1;

  location /
  {
    proxy_pass http://laravel;
  }
}

/old-index/ にアクセスしたらバックエンドのインデックスにアクセスする例です。ポイントは proxy_pass の URL が / で終わっているところです。

location /old-index/
{
  proxy_pass http://backend:8080/;
  proxy_redirect default;
}

location のブロックの中に proxy_set_header があると動作が違うようですね。(proxy_redirect defautl ?)

location /
{
  proxy_set_header X-Forwarded-Host $host;
  proxy_pass http://host.docker.internal:7080;
}

以上

Scroll to Top