概要

単純にIPを返すものが欲しかった。

目的は、グローバルIPが降ってくる環境で、ルータ内のサーバが外部IPを知るため。

なるべくnginxで簡単にできればなおよし。

方法

nginxのechoモジュールを使えばできた。

インストール

/etc/portage/make.confあたりに、

NGINX_MODULES_HTTP="access ... echo"

を追記する。自分の好きな(使う)モジュールも書いておくこと。

/etc/nginx/nginx.conf

locationに適当な名前をつけて、特定のファイルリクエストが来たらIPを返すようにする。

http {
  server {

    ...

    location = /ipaddr.txt {
      default_type text/plain;
      echo $remote_addr;
    }
  }
}

再起動

$ rc-service nginx restart

アクセスしてみる

$ curl -4 http://localhost/ipaddr.txt
127.0.0.1

$ curl -6 http://localhost/ipaddr.txt
::1

$ curl --head http://localhost/ipaddr.txt
HTTP/1.1 200 OK
Server: nginx/1.4.4
Date: Mon, 25 Nov 2013 12:35:20 GMT
Content-Type: text/plain
Connection: keep-alive
Keep-Alive: timeout=20

他の用途

Echoモジュールは、別のページをリクエストして、その結果を返す、ということが できる。そのため、ファイルの読み込み等も擬似的にできる模様。

サンプルに面白い例があるので、これらを参考に何か作れるかも。

comments powered by Disqus
カテゴリ
タグ
月別アーカイブ