seafile开启webdav功能,摘抄自seafile官方文档

 admin   2023-09-12 10:34   310 人阅读  0 条评论

原文链接https://cloud.seafile.com/published/seafile-manual-cn/extension/webdav.md

WebDAV扩展

在下面的维基中, 我们假设你将Seafile安装到/data/haiwen目录下。
适用于7.1+的SeafDAV配置

SeafDAV配置文件是/data/haiwen/conf/seafdav.conf. 如果它还没有被创建,你可以自行创建它。

[WEBDAV]

# Default is false. Change it to true to enable SeafDAV server.

enabled = true

port = 8080

# If you deploy seafdav behind nginx/apache, you need to modify "share_name".

share_name = /seafdav

每次配置文件被修改后,你需要重启Seafile服务器使之生效。

./seafile.sh restart

你的WebDAV客户端将在地址http://example.com:8080访问WebDAV服务器

在Seafile 7.1.x之后,Seafdav不支持Fastcgi,仅支持Wsg。如果你使用 Nginx 或者 Apache,需要将配置 Fastcgi 模式改为代理模式。

在资料库后面显示repo_id,适用于seafile企业版7.1.8和社区版7.1.5版本。

show_repo_id=true

Nginx的代理

对于Seafdav,Nginx的配置如下:

.....

    location /seafdav {

        proxy_pass         http://127.0.0.1:8080/seafdav;

        proxy_set_header   Host $host;

        proxy_set_header   X-Real-IP $remote_addr;

        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header   X-Forwarded-Host $server_name;

        proxy_set_header   X-Forwarded-Proto $scheme;

        proxy_read_timeout  1200s;

        client_max_body_size 0;

 

        access_log      /var/log/nginx/seafdav.access.log seafileformat;

        error_log       /var/log/nginx/seafdav.error.log;

    }

     location /:dir_browser {

        proxy_pass         http://127.0.0.1:8080/:dir_browser;

    }

注释:ProxyPass "http://127.0.0.1:8080/:dir_browser"是通过浏览器预览时,能显示 WebDav 的 Logo
使用Apache代理

对于Seafdav,Apache的配置如下:

......

    <Location /seafdav>

        ProxyPass "http://127.0.0.1:8080/seafdav"

    </Location>

    <Location /:dir_browser>

        ProxyPass "http://127.0.0.1:8080/:dir_browser"

    </Location>

注释:ProxyPass "http://127.0.0.1:8080/:dir_browser"是通过浏览器预览时,能显示 WebDav 的 Logo
HTTPS proxy

如果您在Nginx或Apache中配置https,则必须配置反向代理以将 标头的协议从“ https” 重写  为“ http”。这是SeafDAV基于WebDAV框架的限制。查看更多详细信息:

    https://forum.seafile.com/t/seafdav-move-command-causing-502/11582

    ttps://github.com/mar10/wsgidav/issues/183

适用于7.0及更早版本SeafDAV的配置

SeafDAV配置文件是/data/haiwen/conf/seafdav.conf. 如果它还没有被创建,你可以自行创建它。

每次配置文件被修改后,你需要重启Seafile服务器使之生效。
示例配置 1: No nginx/apache

你的WebDAV客户端将在地址http://example.com:8080访问WebDAV服务器。

[WEBDAV]

enabled = true

port = 8080

fastcgi = false

share_name = /

示例配置 2: With Nginx/Apache

你的WebDAV客户端将在地址http://example.com/seafdav访问WebDAV服务器。

[WEBDAV]

enabled = true

port = 8080

fastcgi = true

share_name = /seafdav

在上面的配置中,'''share_name'''的值被改为'''/seafdav''', 它是你指定给seafdav服务器的地址后缀。
Nginx 无 HTTPS

相应的Nginx配置如下 (无 https):

location /seafdav {

        fastcgi_pass    127.0.0.1:8080;

        fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;

        fastcgi_param   PATH_INFO           $fastcgi_script_name;

 

        fastcgi_param   SERVER_PROTOCOL     $server_protocol;

        fastcgi_param   QUERY_STRING        $query_string;

        fastcgi_param   REQUEST_METHOD      $request_method;

        fastcgi_param   CONTENT_TYPE        $content_type;

        fastcgi_param   CONTENT_LENGTH      $content_length;

        fastcgi_param   SERVER_ADDR         $server_addr;

        fastcgi_param   SERVER_PORT         $server_port;

        fastcgi_param   SERVER_NAME         $server_name;

        

        client_max_body_size 0;

        proxy_connect_timeout  36000s;

        proxy_read_timeout  36000s;

        proxy_send_timeout  36000s;

        send_timeout  36000s;

        

        # This option is only available for Nginx >= 1.8.0. See more details below.

        proxy_request_buffering off;

 

        access_log      /var/log/nginx/seafdav.access.log;

        error_log       /var/log/nginx/seafdav.error.log;

    }

Nginx 有 HTTPS

Nginx配置为https:

 location /seafdav {

        fastcgi_pass    127.0.0.1:8080;

        fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;

        fastcgi_param   PATH_INFO           $fastcgi_script_name;

 

        fastcgi_param   SERVER_PROTOCOL     $server_protocol;

        fastcgi_param   QUERY_STRING        $query_string;

        fastcgi_param   REQUEST_METHOD      $request_method;

        fastcgi_param   CONTENT_TYPE        $content_type;

        fastcgi_param   CONTENT_LENGTH      $content_length;

        fastcgi_param   SERVER_ADDR         $server_addr;

        fastcgi_param   SERVER_PORT         $server_port;

        fastcgi_param   SERVER_NAME         $server_name;

        fastcgi_param   HTTPS               on;

        fastcgi_param   HTTP_SCHEME         https;

        

        client_max_body_size 0;

        proxy_connect_timeout  36000s;

        proxy_read_timeout  36000s;

        proxy_send_timeout  36000s;

        send_timeout  36000s;

        

        # This option is only available for Nginx >= 1.8.0. See more details below.

        proxy_request_buffering off;

 

        access_log      /var/log/nginx/seafdav.access.log;

        error_log       /var/log/nginx/seafdav.error.log;

    }

默认情况下,Nginx将在临时文件中缓冲大型请求主体。接收到主体后,Nginx会将主体发送到上游服务器(在本例中为seafdav)。但是,当文件很大时,缓冲机制似乎无法正常工作。它可能会停止在中间代理身体。因此,如果您想支持更大的文件上传空间(4GB),建议您安装Nginx版本> = 1.8.0并添加到Nginx配置中。proxy_request_buffering off
apache

首先编辑 apache2.conf 文件, 添加如下这行到文件结尾(或者根据你的Linux发行版将其添加到 httpd.conf):

注意, /var/www/seafdav.fcgi 仅仅只是一个占位符, 实际在你的系统并不需要有此文件。

第二, 修改Apache配置文件 (site-enabled/000-default):
Apache 无 HTTPS

根据使用Apache配置代理seafile配置  加入Seafdav的相关配置:

<VirtualHost *:80>

 

    ServerName www.myseafile.com

    # Use "DocumentRoot /var/www/html" for Centos/Fedora

    # Use "DocumentRoot /var/www" for Ubuntu/Debian

    DocumentRoot /var/www

    Alias /media  /home/user/haiwen/seafile-server-latest/seahub/media

 

    RewriteEngine On

 

    <Location /media>

        Require all granted

    </Location>

 

    #

    # seafile fileserver

    #

    ProxyPass /seafhttp http://127.0.0.1:8082

    ProxyPassReverse /seafhttp http://127.0.0.1:8082

    RewriteRule ^/seafhttp - [QSA,L]

 

    #

    # WebDAV

    # We use http proxy, since SeafDAV is incompatible with FCGI proxy in Apache 2.4.

    #

    ProxyPass /seafdav http://127.0.0.1:8080/seafdav

    ProxyPassReverse /seafdav http://127.0.0.1:8080/seafdav

 

    #

    # seahub

    #

    SetEnvIf Request_URI . proxy-fcgi-pathinfo=unescape

    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

    ProxyPreserveHost On

    ProxyPass / fcgi://127.0.0.1:8000/

 

</virtualhost>

Apache 有 HTTPS

根据你的apache配置当你配置Seafile网站和Apache并启用Https, 加入seafdav的相关配置:

<VirtualHost *:443>

 

  ServerName www.myseafile.com

  DocumentRoot /var/www

 

  SSLEngine On

  SSLCertificateFile /path/to/cacert.pem

  SSLCertificateKeyFile /path/to/privkey.pem

 

  Alias /media  /home/user/haiwen/seafile-server-latest/seahub/media

 

  <Location /media>

    ProxyPass !

    Require all granted

  </Location>

 

  RewriteEngine On

 

  #

  # seafile fileserver

  #

  ProxyPass /seafhttp http://127.0.0.1:8082

  ProxyPassReverse /seafhttp http://127.0.0.1:8082

  RewriteRule ^/seafhttp - [QSA,L]

  

  #

  # WebDAV

  # We use http proxy, since SeafDAV is incompatible with FCGI proxy in Apache 2.4.

  #

  ProxyPass /seafdav http://127.0.0.1:8080/seafdav

  ProxyPassReverse /seafdav http://127.0.0.1:8080/seafdav

  

  #

  # seahub

  #

  SetEnvIf Request_URI . proxy-fcgi-pathinfo=unescape

  SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

  ProxyPass / fcgi://127.0.0.1:8000/

 

</virtualhost>

关于客户端的注意事项
Windows

在Windows平台,我们推荐使用webdav客户端软件例如Cyberduck或BitKinex.
webdav对于Windows浏览器的支持实现并不是十分可用,因为:

Windows 浏览器需要利用HTTP数字认证。但是由于Seafile在服务器端不存储纯文本密码,所以它不支持这个特性。HTTP基本认证只被HTTPS支持(这是合理的)。但是浏览器不支持自我签署的证书。

结论就是如果你有一个合法的ssl证书,你应该能过通过Windows浏览器来访问seafdav。否则你应该使用客户端软件。Windows XP被声明不支持HTTPS webdav.
Linux

在Linux平台你有更多的选择。你可以利用文件管理器例如Nautilus来连接webdav服务器,或者在命令行使用davfs2。

使用davfs2

sudo apt-get install davfs2

sudo mount -t davfs -o uid=<username> https://example.com/seafdav /media/seafdav/

-o选项设置挂载目录的拥有者为<username>,使得非root用户拥有可写权限。

我们建议对于davfs2,禁用锁操作。你需要编辑/etc/davfs2/davfs2.conf

 use_locks       0

Mac OS X

Finder对于WebDAV的支持不稳定而且较慢. 所以我们建议使用webdav客户端软件如Cyberduck.
常见问题
客户端无法连接seafdav服务器

默认, seafdav是未被启用的。检查你是否在seafdav.conf中设置enabled = true。 
如果没有,更改配置文件并重启seafle服务器。
客户端得到"Error: 404 Not Found"错误

如果你将SeafDAV部署在Nginx/Apache, 请确保像上面的配置文件一样更改share_name的值。重启Seafile服务器后重新测试。

本文地址:https://liuchunjie.top/?id=637
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?