Basic 認証をかけつつレスポンスヘッダをカスタマイズしたかったので Apache と nginx で試してみた。 Server version: Apache/2.2.15 (Unix) と nginx version: nginx/0.8.54 で試した。
Apache の場合
Header ディレクティブに always を追加すればよい。デフォルトでは 20x レスポンスの場合のみヘッダを操作する挙動なので注意。
オプションの condition は onsuccess か always のどちらかを指定できます。これは内部ヘッダテーブルのどれを 操作するかを決定します。onsuccess は 2xx ステータスコードの、always は全てのステータスコード (2xx を含む) の意味になります。 あるモジュールでセットされるヘッダをアンセットしたい場合は特に、 どのテーブルが影響を受けるかを実際に試したほうがよいでしょう。
http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html#header
Basic (Digest) 認証と組み合わせるとこんな感じ。
Header always set X-Respect-MovableType "melody:nelson" AuthType Basic AuthName "X-Respect-MovableType" AuthUserFile /etc/httpd/htpasswd Require valid-user
nginx の場合
標準でもヘッダはいじれるけど、
Adds headers to the HTTP response when the response code is equal to 200, 204, 301, 302 or 304.
http://wiki.nginx.org/HttpHeadersModule
ということなので 401 は未対応。なので NginxHttpHeadersMoreModule が必要になる。ソースから入れなおす必要があるのでめんどい。
めんどいので実際やってないけど、 headers_more つかわずに HttpHeadersModule だけで書くとこんな感じになる。
http { server { location / { root /usr/share/nginx/html; index index.html index.htm; add_header X-Respect-MovableType "melody:nelson"; auth_basic "X-Respect-MovableType"; auth_basic_user_file htpasswd; } } }
この add_header を more_set_headers "X-MovableType: melody:nelson"; にかえればうごくと思う。