我有一个装有 CentOS 的 VPS,Apache Web 服务器出现了非常奇怪的行为。
我启动这台服务器时使用了 50GB 的磁盘空间,但很快空间就用完了,所以我询问了维护部门,他们又添加了 50GB 作为新硬盘。所以我创建了一个新分区并将其挂载进去/home/media
,然后将我所有的网站媒体文件都移到了这个位置,最后我创建了一个 SymLink,如下所示:
lrwxrwxrwx. 1 apache apache 12 May 15 14:07 media -> /home/media/
今天,我又一次磁盘空间不足,他们这次确实添加了一个容量为 100GB 的新硬盘。我只是想做和我之前做的那样,/home/media/
但这次它被称为/data/media
。
lrwxrwxrwx. 1 apache pooya 12 Jun 9 22:43 media -> /data/media/
现在,当我在浏览器中导航到媒体文件夹中的文件时,出现Forbidden 403
错误。
我检查了 Apache 的错误日志,上面写着:不允许符号链接或链接目标无法访问:/var/www/html/media。
互联网上针对此错误的所有解决方案都是添加Options Indexes FollowSymLinks
或网络服务器面临使用 symliked 目录的访问问题。
我FollowSymLinks
在 apache 配置文件和我的根.htaccess
文件中都有。所有文件和文件夹以及它们的父级/data/media/
都已 chmodded 到777并且其中的 chown 是apache:apache
。
我的网络服务器出了什么问题?
答案1
您几乎永远不需要在您的 Web 树中拥有 777 个权限。
您可能需要修复 SELinux 权限,因为 /data/media 不是存储 Web 文件的标准位置。您可以通过暂时禁用 SELinux 来快速测试这一点
setenforce 0
运行一些测试,如果网络文件现在可以访问,则 SELinux 是罪魁祸首。重新启用 Linux
setenforce 1
然后解决问题
semanage fcontext -a -t httpd_sys_content_t "/data/media(/.*)?"
其次是
restorecon -r -v /data/media
现在 apache 应该能够访问这些文件。
semanage 实用程序由 policycoreutils-python 包提供,因此您可以使用以下命令安装它
yum install policycoreutils-python