Hy,
나는 똑같은 것을 찾고 있었고 마침내 apache2를 사용하여 솔루션을 수집했습니다. npm webdav-server를 사용하여 노드 솔루션을 시도했지만 아파치 모듈을 사용하여 모두 잘 작동하지는 않았다는 것을 알았습니다. 그런 다음 jsDAV 기반의 npm dav-server를 사용하여 더 잘하고 해결책이 될 수 있었지만 3g 연결을 처리해야하기 때문에 아파치를 선호하고 여러 인스턴스 스크립트에 대해 알았습니다.
그래서 나는 내 경험을 공유합니다.
http://helpcenter.epages.com/Doc/doc/apache2/README.multiple-instances
나는 webdav 사용자별로 인스턴스를 실행합니다 ... 확장 성이 좋지는 않지만 소규모 팀에서 일하면 충분합니다.
myUser를 사용자로 바꾸십시오.
우분투 14.04에서
sh /usr/share/doc/apache2/examples/setup-instance myUser
그래서 / etc / apache2-myUser / envars에 정의 된 사용자 myUser로 아파치 프로세스를 실행합니다.
export APACHE_RUN_USER=myUser
export APACHE_RUN_GROUP=myUser
ports.conf 편집
# If you proxy with nginx as I did better to limit to local interface
listen localhost:8080
# listen 8080
우분투 14.04에서 PAM 인증을 얻을 수 없으므로 기본 인증으로 속임수를 쓴 다음 nginx를 사용하여 https로 래핑해야합니다.
htpasswd -c /etc/apache2/htpasswd myUser
그런 다음 /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>
그런 다음 nginx 프록시에는 헤더 대상 전달 아이콘 폴더가있는 트릭이 있습니다.
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;
}
nginx를 프록시로 사용해야 할 의무는 없으며, 아파치가 https를 잘 수행 할 수는 있지만 프록시 대상 문제에 부딪 혔을 때 언급 할 가치가 있다고 생각했습니다.