SynologyのNASでWebサービスを使おうとして、.htpasswdと.htaccessを設置したが、IDとパスワード入力画面が表示されず、指定したファイルの内容が表示されてしまいました。この原因を調べて対処した記録です。
【設定内容】
- パッケージセンターから「Web Station」をインストール
- 「Web Station」を[開く]で[Webポータルサービス]選ぶ
- [作成]で[仮想ホスト]を選び、ポータルタイプを「名前ベース」ホスト名にアクセスするときのドメイン名を入力
- [次へ]でドキュメントルートに共有フォルダとしているディレクトリを選択、HTTPバックエンドサーバにApache HTTP Server 2.4を選択
- ドキュメントルートに、Basic認証のための.htpasswdと.htaccessを置いた
【現象】
ブラウザからアクセスしたが、IDとパスワードの入力画面が表示されない。
.htaccessが動作しているのか確認するために、.htaccessの記述を
Options Indexes
だけに変更して、デイレクトリにアクセスしてみると、「403 この要請を処理している間にエラーが発生しました」
【調査と結果】
403は「閲覧禁止状態」なので、ディレクトリ一覧の表示は許可されていない、.htaccessでの指定が効いていない。
この原因は、自前のLinuxサーバならApacheのconfを考えるところだが、NASの場合confファイルは自分では設定指定ので、Web StationなどGUIで設定したどこかに漏れがあったと考える。
Web Stationの[Webサービスポータル] タブに移動すると画面の右側は「デフォルトポータル」と「ユーザ定義のポータル」があるが、デフォルトポータル」の方を選んで[編集]をクリックすると、[HTTPバックエンドサーバ]の項目がある。
ここが[Nginx]になっていたので[Apache2.4]に変更した。
この結果.htaccessが機能するようになった。
動作しているWebサーバがNginxなのに、.htaccessにはApacheの記述がだったことが原因だった。
そりゃそうですね、という原因で約2時間悩みました。
でも、HTTPバックエンドサーバにApache HTTP Server 2.4を選択しているので、デフォルト サーバの方の設定が影響しているとはなかなか気が付きませんでした。
【権限】
追記
.htpasswdと.htaccessの所有者とアクセス権をどうするかですが、“結果論”ですが試行錯誤の末にこうしました。
-rw----r-- 1 http http 180 May 24 16:22 .htaccess
-rw------- 1 http http 24 May 24 15:30 .htpasswd
所有者はgrepでそれっぽいアカウントを探しました
$ grep -e http -e pache /etc/passwd
http:x:1023:1023::/var/services/web:/bin/false
【補足】
「Synology NAS .htaccess 403」で検索すると、(機械翻訳っぽい)SynologyナレッジセンターのQ&Aがヒットするが、参考になりませんでした。