配置了指向我的用户目录中文件夹的符号链接的 Apache 虚拟主机失败,并出现 403 Forbidden

配置了指向我的用户目录中文件夹的符号链接的 Apache 虚拟主机失败,并出现 403 Forbidden

我确信之前有人问过/回答过这个问题,但我的搜索并没有给我太多帮助,所以......

我的 Linux 机器 (LM13) 上安装了 Eclipse IDE,其“工作区”文件夹位于 @ /home/user/projects/workspace

我已经安装并设置了 Apache,可以使用各种虚拟主机,所有这些虚拟主机的文件夹都位于 web-root 下的某个位置/var/www/...

我遇到的问题是,我在 Eclipse Workspace 中为项目配置的 vhost 无法被 Apache 访问,因此出现了“403 - 禁止 - 您无权访问此服务器上的 /”的提示。

首先,我尝试了一个“普通”的虚拟主机配置,然后尝试使用 web-root @ 下的 SymLink /var/www/freelance/project链接到 Eclipse 工作区中的项目文件夹

我已尝试使用FollowSymLinks和部分SymLinksIfOwnerMatch下的选项指令<directory ...>,但仍然无法在浏览器中使用 Apache 访问它!

有人能向我解释一下如何让这个设置工作吗?我mod_userdir还没有尝试使用或设置文件夹上的文件权限/home以允许访问 Apache,因为这两种方法似乎都不太理想。还有其他方法吗?

这是我的虚拟主机配置:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>


更新

输出自ls -alFd ~/Projects/workspace/iagd:-

    drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/

相同的输出/home/user:-

    drwx------ 74 user user 20480 Aug 23 07:30 /home/user/

答案1

您需要为主目录的子目录添加目录指令。当 Apache 访问符号链接时,将访问符号链接指向的实际目录,而不是符号链接指针。

因此,您需要两样东西:

首先,操作系统权限。您的目录需要对 Apache 用户可读,这意味着其上层的所有目录都需要为 Apache 用户设置可执行位。

其次,Apache 配置。需要告知 Apache 可以从该目录读取。通常,您会希望限制 Apache 仅允许读取有限的目录层次结构 - 否则,任何 Web 用户都有可能查看您的密码文件,或浏览每个人的主目录。因此,当您想要访问 Web 根层次结构之外的目录时,您需要添加一个指令告诉 Apache 允许它。它看起来像这样:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    <Directory /home/user/projects/workspace>
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>

相关内容