mod_xsendfileを導入する

投稿日:2019年04月15日 08時28分50秒

mod_xsendfileとは?
mod_xsendfileはダウンロードするソースをドキュメントルート以外に配置するために使います。
これを設定すればソースへの直接リンクからソースを取得されることがなくなります。php等で認証した後でソースを読み書きしても同じなのですが、サイズが大きいファイル等の場合転送の負荷が気になります。この点mod_xsendfileはapacheのモジュールとなっているのでphp等に依存しないで転送できます。
mod_xsendfileのインストール
ソースをコンパイルして使うのでgccとapxsが必要となります。

yum -y install httpd_devel gcc

後はサイトからソースを取得して解凍し、コンパイルします。
github

apxs -cia mod_xsendfile.c

さらにapacheの設定に取得するパスを記述します
/etc/httpd/conf/httpd.conf

XSendFilePath /path/to/folder

これでapacheをリスタートすればインストール完了です。

/sbin/serivce httpd restart

ちなみに最初うまく動かない事がありまして、deflateの設定がNGでした。

#SetOutputFilter DEFLATE

mod_xsendfileをphpから使う
実際に使うにはContent-Type,Content_Size,X-sendfileをヘッダに出力するだけです。
.htaccess

XSendFile on

とても簡単ですね。.htaccessで出力パスは設定できるようですが、ローカルにあまり設定を置きたくなかったのでこのようにしました。
色々使えると思いますよ。

[<< デザイン業界とIT業界とコピペ]

[PHPテンプレートエンジンを1行で自作する >>]