Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【/dav】nginx反代后挂载webdav的兼容性很差。(Method Not Allowed) #6669

Closed
1 of 4 tasks
Whichbfj28 opened this issue Jun 29, 2024 · 11 comments
Closed
1 of 4 tasks
Labels
enhancement New feature or request

Comments

@Whichbfj28
Copy link

Whichbfj28 commented Jun 29, 2024

Please make sure of the following things

  • I have read the documentation.
  • I'm sure there are no duplicate issues or discussions.
  • I'm sure this feature is not implemented.
  • I'm sure it's a reasonable and popular requirement.

Description of the feature / 需求描述

1、浏览器无法显示 错误代码 Method Not Allowed
2、winscp可以读取、上传。但是无法删除 重命名
3、nextchat备份无法使用
4、ptpp又可以使用
PS:sftpgo 没这个问题

作者有想过优化webdav的兼容性吗。可以把S3的缓缓。。webdav才是最常用的。

Suggested solution / 实现思路

No response

Additional context / 附件

No response

@Whichbfj28 Whichbfj28 added the enhancement New feature or request label Jun 29, 2024
Copy link

welcome bot commented Jun 29, 2024

Thanks for opening your first issue here! Be sure to follow the issue template!

1 similar comment
@Whichbfj28 Whichbfj28 changed the title /dav 挂载webdav的兼容性很差。【Method Not Allowed】 【/dav】nginx反代后挂载webdav的兼容性很差。(Method Not Allowed) Jun 29, 2024
@pongfcnkl
Copy link

pongfcnkl commented Jun 29, 2024

  1. 浏览器本来就不支持webdav
  2. 关闭反代后可以换rclone
  3. 像nextchat反馈

@Whichbfj28
Copy link
Author

  1. 浏览器本来就不支持webdav

  2. 关闭反代后可以换rclone

  3. 像nextchat反馈

1、webdav本身就是http的,浏览器直接抛错,误导用户。
2、我反馈的是兼容性问题,为什么要用rclone。用rclone我直接mount davfs2挂载alist再用sftpgo映射dav不更好?
再者,麻烦认真看说明,我反馈的就是nginx反代后的兼容性问题。你让我关闭反代?
3、同2 ,我反馈的是nginx反代后的兼容性问题,反代前没问题。

ps请认真阅读题目:nginx反代后!

@pongfcnkl
Copy link

pongfcnkl commented Jun 30, 2024

  1. 浏览器本来就不支持webdav
  2. 关闭反代后可以换rclone
  3. 像nextchat反馈

1、webdav本身就是http的,浏览器直接抛错,误导用户。 2、我反馈的是兼容性问题,为什么要用rclone。用rclone我直接mount davfs2挂载alist再用sftpgo映射dav不更好? 再者,麻烦认真看说明,我反馈的就是nginx反代后的兼容性问题。你让我关闭反代? 3、同2 ,我反馈的是nginx反代后的兼容性问题,反代前没问题。

ps请认真阅读题目:nginx反代后!

webdav是http,但是浏览器不是webdav客户端,肯定报错
nginx反代参考这个文档https://alist.nn.ci/zh/guide/install/reverse-proxy.html 另外alist不解决反代的问题,大部分是没设置对。

@Whichbfj28
Copy link
Author

  1. 浏览器本来就不支持webdav
  1. 关闭反代后可以换rclone
  1. 像nextchat反馈

1、webdav本身就是http的,浏览器直接抛错,误导用户。 2、我反馈的是兼容性问题,为什么要用rclone。用rclone我直接mount davfs2挂载alist再用sftpgo映射dav不更好? 再者,麻烦认真看说明,我反馈的就是nginx反代后的兼容性问题。你让我关闭反代? 3、同2 ,我反馈的是nginx反代后的兼容性问题,反代前没问题。

ps请认真阅读题目:nginx反代后!

webdav是http,但是浏览器不是webdav客户端,肯定报错

nginx反代参考这个文档https://alist.nn.ci/zh/guide/install/reverse-proxy.html 另外alist不解决反代的问题,大部分是没设置对。

1、你应该不是作者吧。肯定报错………… 这肯定说的很确定啊。
2、建议你去反代测试后再来,我反代是根据文档设置的。

@Whichbfj28
Copy link
Author

Whichbfj28 commented Jul 1, 2024

找到原因了
nginx官方不支持PROPFIND、OPTIONS、LOCK、UNLOCK方法。需要自己额外编译第三方组件:参考
而alist目前已知需要PROPFIND、OPTIONS方法。如果nginx不支持OPTIONS会被直接抛弃

192.168.0.27 192.168.0.169:85 - [01/Jul/2024:08:39:13 +0000] "OPTIONS / HTTP/1.1" 200 3905 "-" "WinSCP/6.1.2 neon/0.32.5"
192.168.0.27 192.168.0.169:85 - [01/Jul/2024:08:39:13 +0000] "PROPFIND / HTTP/1.1" 200 3905 "-" "WinSCP/6.1.2 neon/0.32.5"

我的解决办法:
使用轻量的类似的nginx的lighttpd的服务器进行反代
【我的nginx挂载了很多服务。增加这几个方法会被加大攻击面】
dockerfile:

FROM alpine:3
LABEL maintainer="x" 
RUN apk --update add --no-cache  ca-certificates lighttpd lighttpd-mod_auth
ENV TZ=Asia/Shanghai
ENTRYPOINT ["/usr/sbin/lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf" ] 
#构建命令 docker build -t lighttpd:v1.4 . 

lighttpd.conf:

server.document-root = "/var/www/" 
server.port = 85 #监听端口
static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" ) #禁止直接查看文件内容。例如php是用来生成网页的。禁止直接查看
index-file.names = ( "index.html" , "index.htm", "index.php") #默认主页


#反代配置
server.modules += ( "mod_accesslog", "mod_proxy")
proxy.server               = ( "/" =>
                               ( "localhost" =>
                                 (
                                   "host" => "localhost",
                                   "port" => 5244
                                 )
                               )
                             )

#证书配置
server.modules += ( "mod_openssl")
$SERVER["socket"] == ":86" {  
    ssl.engine   = "enable"   
    ssl.pemfile  = "/ssl/server.pem" 
    ssl.ca-file  = "/ssl/ca-cert.pem"
}

docker-compose.yml:

version: "3"
services:
  lighttpd:
    image: lighttpd:v1.4
    restart: always
    container_name: lighttpd
    network_mode: "host"
#    ports:
#      - "81:81"  #默认的是80.我设置为81【修改lighttpd.conf文件的端口】.用了host模式 
    volumes:
      - ./www/:/var/www/
      - ./ssl/:/ssl/
      - ./lighttpd.conf:/etc/lighttpd/lighttpd.conf
    tty: true

浏览器访问依然会出现Method Not Allowed。这个不使用反代也一样。
使用winscp访问反代后的alist可以正常删除、重命名、下载、新建文件夹、新建文件。

@conglinyizhi
Copy link

您好,我发现您似乎已经找到了这个问题的解决方案,可以请您关闭这个 issues 吗?

@JerryWn12
Copy link

你好,刚试了下,winscp重命名和删除都没有问题,也是使用的 nginx 反向代理。

location /alist {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:5244;
        # the max size of file to upload
        client_max_body_size 4096m;
}

@conglinyizhi
Copy link

你好,刚试了下,winscp重命名和删除都没有问题,也是使用的 nginx 反向代理。

location /alist {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:5244;
        # the max size of file to upload
        client_max_body_size 4096m;
}

我无法确定这个问题是否与这个问题的上下文相关,并且考虑到这个 issue 已经关闭,要考虑启动一个新的 issue 吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants