nc コマンドで簡易に http サーバを立ち上げることができます。大体の *nix ディストリビューションにはデフォルトで入っているので気軽に利用できます。
$ nc -l 8080
これで 8080 番ポートで listen してくれる tcp サーバが立ち上がります.curl http://localhost:8080 とリクエストを送ると nc コマンドに http リクエストの内容が出力されます。個人的には別途 tcpdump しなくても良いこの挙動が大好きです。
$ nc -l 8080
GET / HTTP/1.1
User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Host: localhost:8080
Accept: */*
ただこれだと、レスポンスを何も返していないので、そのまま固まります。この場合は curl コマンドを Ctrl-C で終了しましょう。
レスポンスも返したい場合はパイプで渡せばよいです。
これでちゃんとレスポンスが返ります。
ただ1回返すと nc コマンドは終了してしまうので、ずっと起動しておきたい場合は、
のようにループさせる必要があります。あれ、Ctrl-C で死なないですね。Ctrl-z で中断して kill %job で終了させてください ^^;
※ なにかうまい方法ないかな ...
追記:見つけた!
これで Ctrl-C で終了できました :D
でも長くなって覚えるのめんどくさいから、Ctrl-z でいいや ^^;
さらに追記:これでもイケますね。ってなんだかシェル芸の記事みたいになってきた。。。
$ bash -c 'trap exit INT; while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | nc -l 8080; done'
