| 1140 | |
| 1141 | そしたら certbot を使って SSL の設定をします。作業内容は省略。もちろん HTTP -> HTTPS にリダイレクトする設定も施しました。 |
| 1142 | |
| 1143 | ここでいよいよ WebDAV の設定です。もう一度 Nginx の設定ファイルを開いて編集します。 |
| 1144 | |
| 1145 | {{{ |
| 1146 | #!console |
| 1147 | $ sudo su - |
| 1148 | # cd /etc/nginx/sites-available/ |
| 1149 | # vim dav |
| 1150 | }}} |
| 1151 | |
| 1152 | 設定内容の全容は以下の通りです。 |
| 1153 | |
| 1154 | {{{ |
| 1155 | server { |
| 1156 | server_name dav.harapeko.jp; |
| 1157 | root /var/www/vhosts/dav/files; |
| 1158 | |
| 1159 | location / { |
| 1160 | charset utf-8; |
| 1161 | |
| 1162 | autoindex on; |
| 1163 | autoindex_exact_size off; |
| 1164 | autoindex_localtime on; |
| 1165 | |
| 1166 | # enable creating directories without trailing slash (MaxOS/iOS bug support) |
| 1167 | set $x $uri$request_method; |
| 1168 | if ($x ~ [^/]MKCOL$) { |
| 1169 | rewrite ^(.*)$ $1/; |
| 1170 | } |
| 1171 | |
| 1172 | dav_methods PUT DELETE MKCOL COPY MOVE; |
| 1173 | dav_ext_methods PROPFIND OPTIONS; |
| 1174 | #dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; |
| 1175 | #dav_ext_lock zone=harapeko_dav; |
| 1176 | |
| 1177 | dav_access group:rw all:r; |
| 1178 | client_body_temp_path /var/www/vhosts/dav/tmp; |
| 1179 | create_full_put_path on; |
| 1180 | |
| 1181 | auth_basic "WebDAV Authentication"; |
| 1182 | auth_basic_user_file /var/www/vhosts/dav/.htpasswd; |
| 1183 | } |
| 1184 | |
| 1185 | listen [::]:443 ssl; # managed by Certbot |
| 1186 | listen 443 ssl; # managed by Certbot |
| 1187 | ssl_certificate /etc/letsencrypt/live/dav.harapeko.jp/fullchain.pem; # managed by Certbot |
| 1188 | ssl_certificate_key /etc/letsencrypt/live/dav.harapeko.jp/privkey.pem; # managed by Certbot |
| 1189 | include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot |
| 1190 | ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot |
| 1191 | |
| 1192 | } |
| 1193 | |
| 1194 | server { |
| 1195 | if ($host = dav.harapeko.jp) { |
| 1196 | return 301 https://$host$request_uri; |
| 1197 | } # managed by Certbot |
| 1198 | |
| 1199 | |
| 1200 | listen 80; |
| 1201 | listen [::]:80; |
| 1202 | server_name dav.harapeko.jp; |
| 1203 | return 404; # managed by Certbot |
| 1204 | |
| 1205 | |
| 1206 | } |
| 1207 | }}} |
| 1208 | |
| 1209 | [https://github.com/arut/nginx-dav-ext-module nginx-dav-ext-module 公式リポジトリ]の README を見ながら `LOCK`, `UNLOCK` にも対応させてみたかったのですが、 `dav_ext_lock_zone` ディレクティブなんて知らんぞ、と怒られてしまったので (モジュールのバージョンが古いのかも… orz)、とりあえずロックなしで設定してしまっています。 |
| 1210 | |
| 1211 | `autoindex` 関連はブラウザでアクセスしたときにとりあえずファイル一覧を見せておく用です。 |
| 1212 | |
| 1213 | `root` は WebDAV のファイル置き場にするディレクトリパスに変えておきます。 `index` はもはや不要なので削除。 |
| 1214 | |
| 1215 | で、以下の部分ですが、 |
| 1216 | |
| 1217 | {{{ |
| 1218 | # enable creating directories without trailing slash (MaxOS/iOS bug support) |
| 1219 | set $x $uri$request_method; |
| 1220 | if ($x ~ [^/]MKCOL$) { |
| 1221 | rewrite ^(.*)$ $1/; |
| 1222 | } |
| 1223 | }}} |
| 1224 | |
| 1225 | これは `MKCOL` リクエスト (=コレクション作成、よーするにディレクトリ作成) が来たにも関わらず URI がスラッシュで終わっていない場合に、スラッシュ付きの URI に rewrite してあげるというもので、 MacOS や iOS で実際この手のリクエストが来てエラーになる場合があるらしいことへの対応らしいです。想定されるユーザーに Apple ユーザーがいる場合は必須ですね (うちには居ないんですが)。 |
| 1226 | |
| 1227 | SSL に関する設定内容は certbot が勝手にやってくれたものをそのまま残しています。 |
| 1228 | |
| 1229 | 基本認証の設定も書き加えていますが、肝心のパスワードファイルがまだ未作成なので作成します。また、 WebDAV 用のテンポラリファイルも作っておきます。 |
| 1230 | |
| 1231 | {{{ |
| 1232 | #!console |
| 1233 | # cd /var/www/vhosts/dav |
| 1234 | # htpasswd -c .htpasswd murachi |
| 1235 | New password: |
| 1236 | Re-type new password: |
| 1237 | Adding password for user murachi |
| 1238 | # mkdir tmp |
| 1239 | # chown murachi:www-data .htpasswd tmp |
| 1240 | # ls -la |
| 1241 | total 24 |
| 1242 | drwxr-xr-x 5 root root 4096 11月 4 23:51 . |
| 1243 | drwxr-xr-x 7 root root 4096 11月 4 17:17 .. |
| 1244 | -rw-r--r-- 1 murachi www-data 46 11月 4 22:41 .htpasswd |
| 1245 | drwxrwsr-x 3 murachi www-data 4096 11月 5 00:00 files |
| 1246 | drwxrwsr-x 2 murachi www-data 4096 11月 4 17:23 html |
| 1247 | drwxr-xr-x 2 www-data www-data 4096 11月 4 23:51 tmp |
| 1248 | # |
| 1249 | }}} |
| 1250 | |
| 1251 | これで Nginx を再起動すれば、 WebDAV が使えるようになるはずです…。 |
| 1252 | |
| 1253 | {{{ |
| 1254 | #!console |
| 1255 | # service nginx restart |
| 1256 | }}} |
| 1257 | |
| 1258 | Ubuntu のファイラーからは無事にアクセスできるようになったのですが、 Windows7 の Web フォルダ機能からは接続できませんでした…。 CarotDAV というツールを使えばいけるのですが… あとファイルアップロードで上書きがどうこうとかいう警告が出ちゃいますね (Ubuntu でも Win + CarotDAV でも)。これだったら sftp とかでも使い勝手はそこまで変わらんかなぁ… (´・_・`) |