ApacheのVirtualHostではまった
ServerName foobar:80 Listen 8080
みたいにすると,自分自身は80番portで受けてるつもりになっていて,実際には8080番portとだけbindしてるサーバになります。この状態で,
$r->server()->port(); # is 80. $r->connection()->local_addr()->port(); # is 8080.
になるわけですが,設定ファイルに
<VirtualHost _default_:8080> </VirtualHost>
みたく(空でも)8080でも受けます,という設定があると,
$r->server()->port(); # is 8080. $r->connection()->local_addr()->port(); # is 8080.
のようになってしまいます。
当たり前といえば当たり前の挙動なんですが前者の挙動に依存していてはまりました。