他の人のパソコンとかssh先とかでファイルを自分のために保存したいことはちょくちょくある。usbメモリやメールが使えなくてもインターネットにつながれば自分のサーバーにファイルを保存できるようにする。
RailsとかFlaskとかアプリケーションサーバーをたてず、nginxだけでやる方法の備忘録。
ちなみに、Webサーバーでファイルの共有ができる仕組みをWebDAVというらしい。
–with-http_dav_moduleのインストール
nginxだけでWebDAVを実現するにはngx_http_dav_moduleモジュールが必要。
$nginx -V
で--with-http_dav_module
が含まれていればOK。
特にインストールした記憶はないが入っていたのでインストール方法は省略する。
サーバーの設定
ファイルを保存するディレクトリを作成
適当なディレクトリを作成する
sudo mkdir /var/www/dav
webサーバーからデータを保存可能にする
sudo chown www-data:www-data /var/www/dav
Nginxの設定
/etc/nginx/conf.d/dav.conf
server {
root /var/www/dav/;
server_name dav.example.com;
charset UTF-8;
location ~ "/upload/([0-9a-zA-Z-.]*)$" {
dav_methods PUT MKCOL COPY MOVE;
dav_access user:rw group:rw all:rw;
client_body_temp_path /var/www/dav/;
create_full_put_path on;
}
}
設定ができたらnginxを再起動
$ sudo nginx -t
$ sudo service nginx restart
curlコマンドでファイルをアップロード
curl -T text.txt --url http://dav.example.com/upload/text.txt -X PUT
サーバーの /var/www/dav/upload/text.txtに保存される。
(自分用メモ: サブドメインはfileにしている)
終わりに
これでインターネットがつながっていれば欲しいファイルを自分のサーバーに保存できるようになった!
パスワードをつけたりファイルの上限を決めたりもできるがまた今度。
Comments