Hy,
Saya mencari hal yang sama dan akhirnya saya mengumpulkan solusi menggunakan apache2. Saya mencoba solusi node menggunakan npm webdav-server dan menemukan tidak semua bekerja dengan baik kemudian menggunakan modul apache. Kemudian saya mencoba npm dav-server berdasarkan jsDAV yang bisa melakukan lebih baik dan bisa menjadi solusi, tetapi karena saya harus berurusan dengan koneksi 3g yang buruk, saya lebih suka apache dan mencari tahu tentang beberapa contoh skrip.
Jadi di sini saya berbagi pengalaman saya.
http://helpcenter.epages.com/Doc/doc/apache2/README.multiple-inances
Saya menjalankan instance per pengguna webdav ... tidak terlalu skalabel, tetapi untuk bekerja dalam tim kecil itu cukup bagus.
Ganti myUser dengan pengguna Anda.
Di Ubuntu 14.04
sh /usr/share/doc/apache2/examples/setup-instance myUser
Jadi saya menjalankan proses apache sebagai pengguna myUser didefinisikan di / etc / apache2-myUser / envars
export APACHE_RUN_USER=myUser
export APACHE_RUN_GROUP=myUser
Edit ports.conf
# If you proxy with nginx as I did better to limit to local interface
listen localhost:8080
# listen 8080
Saya tidak bisa mendapatkan PAM auth di ubuntu 14.04 agar bekerja sehingga perlu mengelabui dengan auth dasar karena saya kemudian membungkusnya dalam https dengan nginx
htpasswd -c /etc/apache2/htpasswd myUser
Kemudian /etc/apache2-myUser/sites-available/000-default.conf
<VirtualHost *:8080>
DocumentRoot /var/www/html
Alias /${APACHE_RUN_USER} /home/${APACHE_RUN_USER}
<Directory /home/${APACHE_RUN_USER}>
Require all granted
Options +Indexes
</Directory>
<Location /${APACHE_RUN_USER}>
DAV On
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/htpasswd
Require valid-user
</Location>
DavLockDB /home/${APACHE_RUN_USER}/.DavLock
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
kemudian proxy nginx memiliki trik dengan header Tujuan lewat ikon folder memungkinkan webdav downgrade dengan baik di browser
server {
listen 443 ssl http2;
server_name exemple.com;
location ~ ^/(myUser|icons)/ {
proxy_pass http://dav-myUser;
# auth_basic "Restricted Content";
# auth_basic_user_file /etc/nginx/htpasswd;
# proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
port_in_redirect off;
# to avoid 502 Bad Gateway:
# http://vanderwijk.info/Members/ivo/articles/ComplexSVNSetupFix
set $destination $http_destination;
if ($destination ~* ^https(.+)$) {
set $destination http$1;
}
proxy_set_header Destination $destination;
proxy_read_timeout 300;
proxy_connect_timeout 5;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
# Remove the Connection header if the client sends it,
# it could be "close" to close a keepalive connection
proxy_set_header Connection "";
}
ssl on;
ssl_certificate /etc/letsencrypt/live/exemple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
}
Tidak ada kewajiban untuk menggunakan nginx sebagai proksi, apache dapat melakukan https dengan sangat baik, tetapi ketika saya bertemu dengan masalah Tujuan proksi saya merasa perlu menyebutkannya.