Hy
Tôi đã tìm kiếm điều tương tự và cuối cùng tôi đã thu thập được một giải pháp bằng cách sử dụng apache2. Tôi đã thử giải pháp nút bằng npm webdav-server và phát hiện ra không phải tất cả đều hoạt động tốt như vậy sau đó sử dụng mô-đun apache. Sau đó, tôi đã thử một máy chủ npm dav dựa trên jsDAV có thể làm tốt hơn và có thể là một giải pháp, nhưng vì tôi phải đối phó với kết nối 3g tệ hại, tôi thích apache và tìm hiểu về nhiều tập lệnh cá thể.
Vì vậy, ở đây tôi chia sẻ kinh nghiệm của tôi.
http://helpcenter.epages.com/Doc/doc/apache2/README.multipl-instances
Tôi chạy một cá thể cho mỗi người dùng webdav ... không thể mở rộng được, nhưng để làm việc trong một nhóm nhỏ thì đủ tốt.
Thay thế myUser bằng người dùng của bạn.
Trên Ubuntu 14.04
sh /usr/share/doc/apache2/examples/setup-instance myUser
Vì vậy, tôi chạy quy trình apache khi người dùng myUser được xác định trong / etc / apache2-myUser / envars
export APACHE_RUN_USER=myUser
export APACHE_RUN_GROUP=myUser
Chỉnh sửa cổng.
# If you proxy with nginx as I did better to limit to local interface
listen localhost:8080
# listen 8080
Tôi không thể tải PAM auth trên Ubuntu 14.04 để hoạt động vì vậy cần phải lừa với auth cơ bản vì sau đó tôi bọc nó trong https bằng nginx
htpasswd -c /etc/apache2/htpasswd myUser
Sau đó /etc/apache2-myUser/sites-av 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>
sau đó nginx proxy có một mẹo với tiêu đề Thư mục biểu tượng chuyển đến đích cho phép webdav hạ cấp độc đáo trên các trình duyệt
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;
}
Không có nghĩa vụ phải sử dụng nginx làm proxy, apache rất có thể thực hiện https, nhưng khi tôi gặp vấn đề về đích, tôi cảm thấy nó đáng để đề cập đến.