nginx は remote_addr を使用して ipv6 を取得します

nginx は remote_addr を使用して ipv6 を取得します

使用できる IPv6 アドレスがないためです。

次のようなサーバー ブロックがあったとします。

server{
    listen [::]:80 ipv6only=on;

    root /some/root;
    server_name some.name;
    index some_index.html;
    location / {
        return "$remote_addr";
    }
}

これは IPv6 アドレスを返しますか? IPv6only を強制しているので、返されると思います。

答え1

いいえ、違います。

Nginx の return ディレクティブは、引数として HTTP ステータス コードを必要とします。

ただし、この目的には echo モジュールを使用できます。

server {
    listen [::]:80 ipv6only=on;
    server_name some.name;
    location / {
        echo "$remote_addr";
    }
}

関連情報