Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Renommer l'échec WebDav Quand installé Apache mod_dav par NginX

J'essaie de résoudre le problème de renommer des fichiers à travers WebDav. Notre pile consiste en une machine de servir une machine à travers Nginx, Varnish et Apache. Lorsque vous essayez de renommer le fichier, l'opération n'est pas effectuée avec la pile que nous sommes actuellement utilisés.

Connecter K. WebDav Le programme client doit:

Se connecter à
https://host:443
dans NginX

NginX Déploiant et redirige une demande au serveur Varnish sur
http://localhost:81
Varnish Demande de demande B. Apache sur
http://localhost:82
, qui offre une session à travers mod_dav

Voici un exemple de renommage infructueux:

$ cadaver [url=https://webdav.domain/]https://webdav.domain/[/url]
Authentication required for Webdav on server `webdav.domain':
Username: user
Password:

dav:/> cd sandbox
dav:/sandbox/> mkdir test
Creating `test': succeeded.

dav:/sandbox/> ls
Listing collection `/sandbox/': succeeded.
Coll: test 0 Mar 12 16:00

dav:/sandbox/> move test newtest
Moving `/sandbox/test' to `/sandbox/newtest': redirect to [url=http://webdav.domain/sandbox/test/]http://webdav.domain/sandbox/test/[/url]

dav:/sandbox/> ls
Listing collection `/sandbox/': succeeded.
Coll: test 0 Mar 12 16:00

Pour plus d'informations client Windows WebDrive Enregistré une erreur 502 (Mauvaise passerelle) et 303 (?) Lors du renommage de l'opération. Les magazines étendus contiennent les informations suivantes:

URI La destination fait référence à un autre schéma ou port (
https://hostname:443
) (vouloir:
http://hostname:82
).

Quelques autres limitations: recherche de modules NginX Webdav montrent que cela ne répond vraiment pas à nos besoins et expédition webdav sur Apache n'est pas une option parce que nous ne voulons pas inclure Apache SSL.

Y a-t-il des moyens de tromper mod_dav Envoyer à un autre hôte? Je suis ouvert aux idées :).
Invité:

Blanche

Confirmation de:

(Retourner à ces jours où j'ai utilisé Subversion) J'ai eu un problème similaire avec la proxe sur Apache SVN À partir d'une interface externe Nginx SSL. Supposons que l'interface Web Nginx SSL Il est hôte https: //, Et nous voulons des connexions proxy avec un serveur interne Apache SVN http: // svn.

Le problème se produit lorsque vous essayez de copier la ressource avec

Destination

Titre:

COPY /path HTTP/1.1
Host: host
Destination: [url=https://host/another_path]https://host/another_path[/url]

Comme tu peux le voir

Destination

Le titre contient toujours

https

Schème. La correction est assez évidente -

location / {
# to avoid 502 Bad Gateway:
# [url=http://vanderwijk.info/Members/ivo/articles/ComplexSVNSetupFix]http://vanderwijk.info/Members ... upFix[/url]
set $destination $http_destination;

if ($destination ~* ^https(.+)$) {
set $destination http$1;
}

proxy_set_header Destination $destination;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass [url=http://svn;]http://svn;[/url]
}

Christine

Confirmation de:

Comme dit @Cnly, Utilisant

set

la directive ne fonctionnera pas si dans l'original

Destination

Titre I. URL. (Je ne sais pas pourquoi)

J'ai utilisé la directive map résoudre le problème.

http {
map $http_destination $http_destination_webdav {
~*https://(.+) http://$1;
default $http_destination;
}

server {
# ...server settings...

location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Destination $http_destination_webdav;

proxy_pass [url=http://svn;]http://svn;[/url]
}
}
}

Pour répondre aux questions, connectez-vous ou registre