nginxでwebdav環境を作成する。


目的

社内のnugetサーバーを作りたい

実行環境の構築

Vagrantでubuntu18.04を使用する。自分の開発環境で以下を使用する。
https://github.com/kaepa3/develop_environment

初期化のシェルなんかは今回いらない、単純にVagrant up からのssh で充分。

インストール

以下を叩く

sudo apt install nginx nginx-extras

この記事を参考にしました。
すいません、結果これの補足記事になりました。

nginxの設定

先ほどの記事同様以下のファイルを編集する。

/etc/nginx/sites-available/default 

※sudoで実行する必要がある。

serverディレクティブの中に以下を追加する。
既にlocationが一つあるが消す必要はない

location /dav/ {
    client_body_temp_path /var/www/temp;
    dav_methods PUT DELETE MKCOL COPY MOVE;
    dav_ext_methods PROPFIND OPTIONS;
    create_full_put_path on;
    dav_access user:rw group:rw all:rw;
    autoindex on;
    allow all;
}

なお本ファイルは以下の繋がりで読み込まれている。
nginx.conf->sites-enabled/default->sites-available/default

本番環境としてはconf.dの中に入れるなどなんか作法があるのだと思う。
↓がkindle unlimitedだったのでサクッと読んでみたが、該当の情報は拾えなかった。
nginx実践ガイド impress top gearシリーズ

ディレクトリの作成

以下のディレクトリを作成する。

sudo mkdir /var/www/temp /var/www/html/dav
sudo chown www-data:www-data /var/www/temp/var/www/html/dav

midirの前者はclient_body_temp_path用、後者はURLの解決のために作る。
chownはwebdavの外部からの操作権限に必要になる」。

nginxの再起動

sudo nginx -s reload

以下にアクセスすると以下のようにフォルダの参照が可能になる。
※Vagrantの設定でクライアント80portのアクセスをホストの8080にフォワードしている。

http://localhost:8080/dav/

参照限定のサーバに変更

location /dav/ {
    client_body_temp_path /var/www/temp;
    dav_ext_methods PROPFIND OPTIONS;
    create_full_put_path on;
    dav_access user:rw group:rw all:r;
    autoindex on;
    allow all;
}
  • dav_methodsを消す。
  • dav_accessのallをrに変更

dav_accessの設定については公式見ましたが検証しないと分からない。
多分、認証等でログイン指定した時にもう少しきめ細かく設定するためだろうが
面倒なので今回は検証しない。

あと、nugetのサーバなら普通のウェブサイトでも良いみたいな情報があったら誰か教えて欲しいです。