V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Alliot
V2EX  ›  NGINX

Nginx 做 webdav, obsidian remote-save 出现 405 状态码

  •  
  •   Alliot · 2023-10-12 10:12:14 +08:00 · 1741 次点击
    这是一个创建于 437 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,使用 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
    
    
    13 条回复    2023-10-12 23:46:45 +08:00
    ysc3839
        1
    ysc3839  
       2023-10-12 12:25:56 +08:00 via Android   ❤️ 1
    可以参考这里面的配置试试 https://her01n.com/2021/05/13/webdav-server-with-nginx/
    其中的 if rewrite 可能有改进空间,不过访问量不大的话不改也不怎么影响性能
    SenLief
        2
    SenLief  
       2023-10-12 13:42:46 +08:00 via iPhone
    用 s3 吧,稳定一些。
    Alliot
        3
    Alliot  
    OP
       2023-10-12 14:00:38 +08:00
    @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
    nullboy
        4
    nullboy  
       2023-10-12 17:32:49 +08:00
    为啥不用 alist ,自己用 nginx 配 webdav 多麻烦
    cest
        5
    cest  
       2023-10-12 17:55:10 +08:00
    remote-save 还有其他问题

    不用 nginx 用 dufs 一样,开始好好的,同步几次后就开始 4xx
    ysc3839
        6
    ysc3839  
       2023-10-12 17:58:26 +08:00 via Android
    @nullboy 没用过 alist ,但以前用过一个 Golang 写的 webdav 服务端,本地用 IDM 多线程下载,速度会越来越慢,然后发现 webdav 进程 CPU 占用极高,停止下载后也不会降低,且后续请求完全没响应,于是就改成用 nginx 了,并没有出现上述问题,也不想再花时间测试各类 webdav 服务端了。
    Pika666
        7
    Pika666  
       2023-10-12 18:41:35 +08:00
    摸鱼看到熟悉的身影 (★> U <★)
    lovelylain
        8
    lovelylain  
       2023-10-12 18:58:35 +08:00 via Android
    if ($request_method = MKCOL) {
    rewrite ^(.*[^/])$ $1/;
    }
    TabGre
        9
    TabGre  
       2023-10-12 18:59:52 +08:00 via iPhone
    我用 onedrive 同步
    lovelylain
        10
    lovelylain  
       2023-10-12 21:06:18 +08:00 via Android
    @Alliot 用 nginx 做 webdav ,网上的代码都不完美,除了.开头这个问题,还有一个问题也要自己解决,好像是符号链接指向一个不存在的文件时
    Alliot
        11
    Alliot  
    OP
       2023-10-12 23:09:44 +08:00
    @lovelylain #8 这个已经是测试过的,亲测无效
    Alliot
        12
    Alliot  
    OP
       2023-10-12 23:10:10 +08:00
    @Pika666 #7
    Alliot
        13
    Alliot  
    OP
       2023-10-12 23:46:45 +08:00
    @lovelylain #10 暂时我这种方式处理下来几个不同的软件的同步都正常, 类似 dufs 、gowebdav 等都有大大小小的问题,所以暂时先用它了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:40 · PVG 02:40 · LAX 10:40 · JFK 13:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.