Apache-Httpd

epub文件上的calibre opds錯誤403

  • June 20, 2016

我正在嘗試使用 calibre2opds 將我的庫放在我的伺服器(fedora21)上。一切正常,我可以導航,直到我想下載一個 epub。

我收到錯誤 403:

You don't have permission to access /Anonyme/Le Livre Sans Nom (41)/Le Livre Sans Nom - Anonyme.epub on this server.

我通過 192.168.1.21/calibre 訪問伺服器。Calibre2ops 把所有東西都放進去

/mnt/Sardaukar/web/calibre

HTML 文件由 calibre2opds 放入

/mnt/Sardaukar/web/calibre/_catalog

以及實際的 epub,例如

/mnt/Sardaukar/web/calibre/Anonyme/Le Livre Sans Nom (41)/Le Livre Sans Nom - Anonyme.epub

httpd 文件看起來像

Alias /calibre /mnt/Sardaukar/web/calibre/_catalog
<Directory /mnt/Sardaukar/web/calibre/_catalog>
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>

我以前做過,即使使用 .htaccess 並且以前也可以,但是現在,我不知道出了什麼問題。/mnt/Sardaukar/web/calibre 的權限是 770,由我 chown:www-users

經過更多研究,我在錯誤日誌中發現:

[Mon Jun 22 21:06:59.774348 2015] [authz_core:error] [pid 10805] [client 192.168.1.5:51992] AH01630: client denied by server configuration: /var/www/html/Anonyme, referer: http://192.168.1.21/calibre/book_0
>>>/book_41.html

為什麼它會嘗試在/var/www/html??中讀取 epub?

首先,請參閱 Apache Wiki 上的DistrosDefaultLayout - Fedora條目

看起來您可能需要添加一個 Document Root (以覆蓋預設值),並且由於您不是從預設根目錄提供文件,因此 ServerRoot (再次覆蓋預設值):

Alias /calibre /mnt/Sardaukar/web/calibre/_catalog
ServerRoot "/calibre"
# Ensure that Apache listens on port 80
Listen 80
<VirtualHost *:80>
   DocumentRoot "/Anonyme/"
   ServerName mypubs.local

# Other directives here
</VirtualHost>
<Directory /mnt/Sardaukar/web/calibre/_catalog>
   AllowOverride All
   Options Indexes FollowSymLinks
   Require all granted
</Directory>

這應該使整個路徑讀取 {ServerRoot} + {DocumentRoot} 或 {Alias /calibre} + Anonyme

推理

出於安全原因,Apache 不允許在ServerRoot. 您指向所有書籍的連結不是ServerRoot. 因此,我必須告訴 Apache 你的伺服器在哪裡被“服務”如果這些都沒有意義,請閱讀關於 Slicehost 的這篇很棒的深入文章。由於 Gentoo 不是您的發行版,請使用導航中的Linux Distros連結查找我為您的特定發行版連結的同一篇文章。作為學習和實踐的問題,我會將您的 epub 保存在安全的地方,並執行以下操作:

  1. 刪除我的hackishhttpd.conf文件。
  2. 按照我連結的指南正確啟用/配置虛擬主機。
  3. 將您的 epub 添加到您在步驟 #2 中創建的 VirtualHost 配置中。

引用自:https://unix.stackexchange.com/questions/211200