
如题,使用 nginx 部署的 webdav 在同步 obsidian 的时候出现 405 的状态码,测试了一圈没能找到解决方法,神通广大的 V 油有没有遇到过同样问题的?
配置如下:
location / { create_full_put_path on; autoindex on; autoindex_exact_size off; autoindex_localtime on; charset utf-8; dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; dav_access user:rw group:rw all:r; client_body_temp_path /tmp/nginx/client-bodies; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/htpasswd; root /data/; } error log:
[error] 136638#0: *26 mkdir() "/data/webdav/obsidian/_posts/.obsidian" failed (17: File exists), client: xxxx, server: xxxxx, request: "MKCOL /webdav/obsidian/_posts/.obsidian/ HTTP/2.0", host:xxxx 1 ysc3839 2023-10-12 12:25:56 +08:00 via Android 可以参考这里面的配置试试 https://her01n.com/2021/05/13/webdav-server-with-nginx/ 其中的 if rewrite 可能有改进空间,不过访问量不大的话不改也不怎么影响性能 |
2 SenLief 2023-10-12 13:42:46 +08:00 via iPhone 用 s3 吧,稳定一些。 |
3 Alliot OP @ysc3839 #1 感谢回复, 这个我测试过,依旧有这个问题。 不过我使用这个 fork 的仓库编译 nginx 后,没有再出现这个问题: https://github.com/mid1221213/nginx-dav-ext-module nginx-dav-ext-module 这个拓展模块没有正确的对 . 开头的文件处理: https://github.com/arut/nginx-dav-ext-module/issues/41 |
4 nullboy 2023-10-12 17:32:49 +08:00 为啥不用 alist ,自己用 nginx 配 webdav 多麻烦 |
5 cest 2023-10-12 17:55:10 +08:00 remote-save 还有其他问题 不用 nginx 用 dufs 一样,开始好好的,同步几次后就开始 4xx |
6 ysc3839 2023-10-12 17:58:26 +08:00 via Android @nullboy 没用过 alist ,但以前用过一个 Golang 写的 webdav 服务端,本地用 IDM 多线程下载,速度会越来越慢,然后发现 webdav 进程 CPU 占用极高,停止下载后也不会降低,且后续请求完全没响应,于是就改成用 nginx 了,并没有出现上述问题,也不想再花时间测试各类 webdav 服务端了。 |
7 DrPika 2023-10-12 18:41:35 +08:00 摸鱼看到熟悉的身影 (★> U <★) |
8 lovelylain 2023-10-12 18:58:35 +08:00 via Android if ($request_method = MKCOL) { rewrite ^(.*[^/])$ $1/; } |
9 TabGre 2023-10-12 18:59:52 +08:00 via iPhone 我用 onedrive 同步 |
10 lovelylain 2023-10-12 21:06:18 +08:00 via Android @Alliot 用 nginx 做 webdav ,网上的代码都不完美,除了.开头这个问题,还有一个问题也要自己解决,好像是符号链接指向一个不存在的文件时 |
11 Alliot OP @lovelylain #8 这个已经是测试过的,亲测无效 |
13 Alliot OP @lovelylain #10 暂时我这种方式处理下来几个不同的软件的同步都正常, 类似 dufs 、gowebdav 等都有大大小小的问题,所以暂时先用它了。 |