curlで気軽にファイルをアップロードできるサーバーをnginxだけで作る

他の人のパソコンとか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

タイトルとURLをコピーしました