我有一台运行 Ubuntu 16.04 的小型服务器。它成功通过 https 提供网页服务。
我也想在 Apache 上通过 https 设置 webdav。我很难找到一个明确设置它的教程,最后只能使用来自几个不同教程的信息,所以很可能我在某个时候做了一些自相矛盾的事情,但我不知道那是什么。
default-ssl-conf 如下所示,删除了所有模板注释。除了添加 DavLockDB 指令外,我没有更改 Alias 命令之前的任何设置。
DavLockDB /var/www/DavLock/davLock
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin me@me
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
# My Webdav config starts here
Alias "/webdav" "/var/www/webdav"
<Directory /var/www/webdav>
DAV on
DirectoryIndex disabled
AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user
</Directory>
</VirtualHost>
通过 cadaver 连接到 localhost 或完全限定名称都会得到相同的响应:
jbhelfrich@arm:/etc/apache2/sites-available$ cadaver https://localhost/webdav
Could not access /webdav/ (not WebDAV-enabled?):
405 Method Not Allowed
Connection to `localhost' closed.
我也在不使用 /webdav 的情况下尝试过,得到了相同的基本响应。/var/www/DavLock 和 /var/www/webdav 都归 www-data 所有
/var/logs/apache2/access.log 显示
::1 - - [10/Aug/2016:20:07:44 +0000] "OPTIONS / HTTP/1.1" 200 229 "-" "cadaver/0.23.3 neon/0.30.1"
::1 - - [10/Aug/2016:20:07:44 +0000] "PROPFIND / HTTP/1.1" 405 501 "-" "cadaver/0.23.3 neon/0.30.1"
error.log 未显示任何相关内容,而 other_vhosts_access.log 为空。
alias、dav_fs、dav 和 dav_lock 模块均已启用。
有人看到我遗漏了什么吗?
答案1
问题是 Lets Encrypt 设置创建了一个我没有注意到的站点特定 ssl 配置。将上述代码复制到该文件中,它运行正常。