2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bytemark/webdavがReverseProxy超えだと接続できない

Last updated at Posted at 2021-08-05

発生した問題

bytemark/webdavを使ってdocker-composeでお手軽にWebDav環境を構築できますが、ApacheのReverseProxyのバックエンドに構築したらクライアントからの接続で「入力したフォルダーは有効ではないようです」と表示されて接続できなくなりました。
WS000381.JPG

原因

bytemark/webdavコンテナが出力したログを見ると クライアントからの OPTIONSメソッドのアクセスがHTTP401のエラーになっていました。

"OPTIONS /hoge HTTP/1.1" 401 381 "-" "Microsoft-WebDAV-MiniRedir/10.0.18362"

ユーザー名/パスワードで認証するより前に OPTIONSメソッドが来ているため拒否されているようです。

対応

bytemark/webdavコンテナ内の
/usr/local/apache2/conf/conf-enabled/dav.conf
の中で

<RequireAny>
  Require valid-user
</RequireAny>

と定義されていて、すべてのメッソドに認証が必要な設定になっているので

<LimitExcept OPTIONS>
  Require valid-user
</LimitExcept>

として、OPTIONSメソッドを認証なしで通るようにします。
conf-availableディレクトリのdav.confをdockerのボリュームで直接マウントしてみましたがコンテナの起動に失敗しました。
Apacheのconfファイルは起動時にアルファベット順に読み込まれることを利用して、変更後の内容を記述したzdav.conf というファイルを conf-enabledディレクトリ内にマウントすることでdav.confの内容を丸ごと上書きするようにしました。

zdav.conf
DavLockDB "/var/lib/dav/DavLock"
Alias / "/var/lib/dav/data/"
<Directory "/var/lib/dav/data/">
  Dav On
  Options Indexes FollowSymLinks

  AuthType Digest
  AuthName "WebDAV"
  AuthUserFile "/user.passwd"
  <LimitExcept OPTIONS>
    Require valid-user
  </LimitExcept>
</Directory>

# These disable redirects on non-GET requests for directories that
# don't include the trailing slash (for misbehaving clients).
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[01234]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
BrowserMatch " Konqueror/4" redirect-carefully
BrowserMatch "^gvfs" redirect-carefully

マウントするconfファイルの定義をdocker-compose.ymlの最終行に追加します。

docker-compose.yml
version: '3'
services:
  webdav:
    image: bytemark/webdav
    restart: always
    ports:
      - "80:80"
    environment:
      AUTH_TYPE: Digest
      USERNAME: hoge
      PASSWORD: fuga
      LOCATION: /hoge
    volumes:
      - ./hoge/dav:/var/lib/dav
      - ./hoge/zdav.conf:/usr/local/apache2/conf/conf-enabled/zdav.conf

まとめ

dockerを使えば色々な機能を数分で立ち上げることが可能ですが、コンテナ内で問題が発生した場合は調査と対応にそれなりの時間を取られることを想定しておく必要があります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?