【问题标题】:Apache VirtualHost 403 ForbiddenApache VirtualHost 403 被禁止
【发布时间】:2011-10-21 00:17:52
【问题描述】:

我最近尝试使用 Apache 设置测试服务器。该站点必须在域www.mytest.com 下运行。我总是收到403 Forbidden 错误。我在 Ubuntu 10.10 服务器版上。文档根目录位于/var/www 目录下。以下是我的设置:

/var/www 的内容

ls -l /var/www/

total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html

服务器上的主机文件内容(IP为192.168.2.5)

cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

网站配置

<VirtualHost *>
ServerAdmin admin@mytest.com
ServerName www.mytest.com
ServerAlias mytest.com

DocumentRoot "/var/www/mytest.com"

ErrorLog /var/log/apache2/mytest-error_log
CustomLog /var/log/apache2/mytest-access_log combined

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all
</Directory>
</VirtualHost>

我的文档根目录中没有.htaccess 文件。权限设置正确(www-data 可读)。

如果我从我的桌面输入 IP 地址,网站会正确显示。我将桌面上的主机文件更改为将www.mytest.com 指向服务器的IP。当我使用它时,我得到403。由于该站点的许多功能都对站点名称敏感,因此我必须能够通过域名访问该站点。

另一个奇怪的事情是,即使所有日志文件都正确创建,它们也没有关于此错误的信息。

我被困住了。有人可以帮忙吗?

【问题讨论】:

  • 能否添加以下内容:sudo sh -c ". /etc/apache2/envvars; apache2 -S"(虚拟主机列表)和:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
  • 第一个命令返回如下:VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK 第二个返回:/etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *

标签: linux apache ubuntu virtualhost http-status-code-403


【解决方案1】:

这可能是权限问题。

虚拟文档根目录的每个父路径都必须是 Web 服务器 httpd 用户可读、可写和可执行的

根据this page关于Apache 403错误。

由于您使用的是Allow from all,因此您的订单应该无关紧要,但您可以尝试将其切换为Deny,Allow 以将default behavior 设置为“允许”。

【讨论】:

  • 可写?真的吗?我不确定
【解决方案2】:

将 Directory 子句移出虚拟主机,并将其放在声明虚拟主机之前。

也让我发疯了很长时间。不知道为什么。这是Debian的事情。

【讨论】:

  • 哇,太奇怪了。
【解决方案3】:

Apache 2.4.3(或稍早一些)添加了一个新的安全功能,该功能通常会导致此错误。您还会看到“客户端被服务器配置拒绝”形式的日志消息。该功能需要用户身份才能访问目录。它由 Apache 附带的 httpd.conf 中的 DEFAULT 启用。您可以使用指令查看该功能的启用

Require all denied

这基本上是说拒绝所有用户的访问。要解决此问题,请删除 denied 指令(或更好),将以下指令添加到您要授予访问权限的目录中:

Require all granted

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>

【讨论】:

  • 我想提醒您,如果您在使用虚拟主机时遇到此问题,您需要在 apache/conf/extra/httpd 中的每个虚拟主机设置中添加“要求全部授予” -vhosts.conf 文件。
  • 我已将此指令添加到 /etc/apache2/apache2.conf,它有所帮助,谢谢!
  • @Soundfx4,/etc/apache2 内没有名为apache/conf/extra 的文件夹
  • 我已添加 /var/dev/website.com 并收到 403 错误。将建议的指令添加到 /etc/apache2/apache2.conf (ubuntu) 就可以了。谢谢大家!
  • 谢谢先生。现在 Apache 越来越难工作了……
【解决方案4】:

问题是文件访问权限错误。

我更改了目录的权限,它起作用了。

【讨论】:

    【解决方案5】:

    对于 apache Ubuntu 2.4.7,我终于发现你需要在 apache2.conf 中将你的虚拟主机列入白名单

    # access here, or in any related virtual host.
    <Directory /home/gav/public_html/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    

    【讨论】:

      【解决方案6】:

      我只是在这个愚蠢的问题上花了几个小时

      首先,在终端中使用 this 更改权限

      find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +
      

      我不知道 664 和 775 有什么区别 我都像这样做了775 htdocs 也需要目录路径,例如对我来说是

      /usr/local/apache2/htdocs 
      
      find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +
      

      这也是另一个愚蠢的事情

      确保您的图片 src 链接是您的域名,例如

      src="http://www.fakedomain.com/images/photo.png"
      

      一定要有

      EnableSendfile off in httpd.conf file
      EnableMMAP off in httpd.conf file
      

      您在终端中使用 pico 编辑那些

      我还专门为图片创建了一个目录,这样当你在浏览器地址栏输入 domainname.com/images 时,你会得到一个可以下载的图片列表,需要下载成功的图片文件正常工作

      <Directory /usr/local/apache2/htdocs/images>
      AddType images/png .png
      </Directory>
      

      这些是我尝试过的解决方案,现在我有了正常工作的图像......耶!!!

      到下一个问题

      【讨论】:

        【解决方案7】:

        我在 Ubuntu 14.04 上的虚拟主机上遇到了同样的问题

        对我来说,以下解决方案有效:

        http://ubuntuforums.org/showthread.php?t=2185282

        只是给/etc/apache2/apache2.conf添加了一个&lt;Directory &gt;标签

        【讨论】:

          【解决方案8】:

          如果你做的一切都正确,只需授予主目录权限,如:

          sudo chmod o+x $HOME
          

          然后

          sudo systemctl restart apache2
          

          【讨论】:

            【解决方案9】:

            我在 Arch Linux 上也遇到过这个问题...这花费了我一些时间,但现在我很高兴我发现了自己的错误:

            我的帐户中包含.html 文件的目录。
            我在r+x 上设置了所有内容,但我仍然收到403 错误。
            然后我完全回去并尝试将我的 home-directory 设置为 execute 这解决了我的问题。

            【讨论】:

              【解决方案10】:

              可能是你没有设置PHP~!

              【讨论】:

                【解决方案11】:

                这适用于虚拟主机的 Linux Fedora : ( Lampp/Xampp )

                转到:/opt/lampp/etc/extra

                打开:httpd-vhosts.conf

                在 httpd-vhosts.conf 中插入这个

                <VirtualHost *:80>
                ServerAdmin mail@domain.com
                DocumentRoot "/opt/lampp/APPS/My_App"
                ServerName votemo.test
                ServerAlias www.votemo.test
                ErrorLog "logs/votemo.test-error_log"
                CustomLog "logs/votemo.test-access_log" common
                <Directory "/opt/lampp/APPS/My_App">
                    Options FollowSymLinks
                    AllowOverride None
                    Require all granted
                </Directory>
                

                附言: 别忘了评论前面的例子 已经存在于 httpd-vhosts.conf 中

                设置你的主机系统文件:

                转到:/etc/文件夹查找主机文件(/etc/hosts)

                我插入这个:(但如果这很好,我不确定 100%)

                127.0.0.1       votemo.test
                
                ::1         votemo.test
                

                -> 打开或重启 Apache。

                打开一个控制台并粘贴此命令以打开一个 XAMPP 图形界面:

                sudo /opt/lampp/manager-linux-x64.run

                注意:根据您的需要调整应用文件夹的路径

                例如:DocumentRoot "/home/USER/Desktop/My_Project"

                并设置目录路径:

                ex : ... ...

                但这应该被测试,如果这个工作评论...

                补充说明:

                • 本地化 Lampp 文件夹:(路径) /opt/lampp

                • 启动灯: sudo /opt/lampp/lampp 开始

                • 根据需要调整权限: sudo chmod o+w /opt/lampp/manager-linux-x64.run

                • 主机文件路径: /etc/hosts

                【讨论】:

                  【解决方案12】:

                  我在使用 apache2.4 时遇到了同样的问题

                  1. 检查配置虚拟主机:
                     <Directory /var/www/html/path/to/index>
                             Options Indexes FollowSymLinks MultiViews
                             AllowOverride All
                             Require all granted
                     </Directory>
                  
                  1. 具体的index.php文件。

                  我们需要 /var/www/html/path/to/index 中的 index.php 或 index.html。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-08-14
                    • 1970-01-01
                    • 2016-12-03
                    • 2014-09-20
                    • 1970-01-01
                    • 2016-03-25
                    相关资源
                    最近更新 更多