Would it be possible to replace FastCGI for Seafdav behind nginx?
If so, how should the nginx configuration look like?
Thanks,
Ruediger
Just checked the status of my seafile service on Linux and it contains the following line:
“─28612 /usr/bin/python2.7 -m wsgidav.server.run_server runfcgi --log-file /Speicher/logs/seafdav.log --pid /Speicher…”.
Does this mean that the webdav server within seafile uses wsgi natively and enables additional fcgi just to allow communication through nginx?
Is there a way to change the nginx script for webdav to run with wsgi directly?
Thanks a lot,
Ruediger
Ok, I guess I figured it out myself.
In case someone else wants to use WSGI for webdav as well, set fastcgi = false in seafdav.conf and change your nginx script to this:
location /seafdav {
proxy_pass http://127.0.0.1:8080;
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;
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;
}
Seems to work perfectly.
Kind regards,
Ruediger
P.S. Is there something that I should add or remove from the current configuration?
So its just to change the config file at nginx to this that you wrote above?
Why did the devs say that webdav does only support fastcgi?
Either there is a reason or they don’t know what they talk about. :-/
I don’t think there is a reason.
It seems that Seafile uses a wsgi webdav server, so why should it worrk better with fastcgi?!
Perhaps the manual needs some update though…
Yes, this and changing the line in seafdav.conf to fastcgi = false.
Regards,
Ruediger
This is just what I was thinking. The devs say something and implement something but it’s not reflected in the manual at all or even false information is given to the users. I don’t get it… why switch Seahub to WSGI and ignore WebDAV leaving it at fastcgi, even when we asked for it?
@daniel.pan @xiez
Someone explain that to us please.
Thanks!
Hi,
it also works on Apache :
Webdav works fine while fastcgi mode is set to false and the Apache vhost use Proxypass
Change
# FASTCGI
RewriteCond %{HTTP:Authorization} (.+)
RewriteRule ^(/davf.*)$ /seafdav.fcgi$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
RewriteRule ^(/davf.*)$ /seafdav.fcgi$1 [QSA,L]
to this
# WCGI / PROXY
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ProxyPass /davf http://127.0.0.1:8080/
ProxyPassReverse /davf http://127.0.0.1:8080/
Why I cannot login from local intranet ?
It pop up login windows, but cannot authenticate
2021-02-16 19:36:30.827 - <3069820928> wsgidav.http_authenticator WARNING : Authentication (basic) failed for user 'xxx@gmail.com', realm 'Seafile Authentication'.
2021-02-16 19:36:30.828 - <3069820928> wsgidav.wsgidav_app INFO : 10.168.1.113 - (anonymous) - [2021-02-17 03:36:30] "GET " elap=0.147sec -> 401 Not Authorized