我有一台运行 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 连接到本地主机或完全限定名称,会得到相同的响应:
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 配置。将上面的代码复制到该文件中,一切正常。