AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1035427
Accepted
Zereges
Zereges
Asked: 2020-09-27 04:00:18 +0800 CST2020-09-27 04:00:18 +0800 CST 2020-09-27 04:00:18 +0800 CST

AllowOverride 不适用于别名站点

  • 772

我有两个域johny.com和alice.com一个管理它们的网络服务器(apache)。Web 文件位于/var/www/johny.com和中,/var/www/alice.com并被配置为两个具有适当ServerName和DocumentRoot. 现在,Alice 想要保护她在网络上的一个文件不被任何人看到。她介绍了一个.htaccess文件,内容如下

<Files "private.txt">
  Require all denied
</Files>

并且还在她的虚拟主机的 apache 配置中添加了以下内容

<Directory /var/www/alice.com>
   Options Indexes FollowSymLinks
   AllowOverride All
</Directory>

并且没有人可以访问alice.com/private.txt. 到目前为止,一切都很好。

现在 John 决定通过更改他的 vhost apache 配置来为 Alice 的 web 提供一个别名

Alias "/alice" "/var/www/alice.com"

任何人都可以在 上看到 Alice 的网页john.com/alice。但是任何人也可以看到爱丽丝私人文件的内容。

alice.com/private.txt给出 403 禁止。
john.com/alice/private.txt显示文件的内容。

这是怎么回事?不通过指令AllowOverride传播?Alias我们应该如何解决这个问题?阿帕奇版本是Apache/2.4.38 (Debian). 将乱码放入.htaccess文件中只会在 500 Internal Server Error 上给出 500 Internal Server Error alice.com,而不是 on john.com/alice,所以似乎.htaccess根本不考虑别名。

alias apache2
  • 1 1 个回答
  • 1190 Views

1 个回答

  • Voted
  1. Best Answer
    Jose Fernando Lopez Fernandez
    2020-09-27T13:15:53+08:002020-09-27T13:15:53+08:00

    问题是目录缺少AllowOverride All指令/var/www/alice.com。

    具体来说,问题出在这里:(强调我的)

    并且还在她的虚拟主机的 apache 配置中添加了以下内容

    由于您在 Alice 的虚拟主机块中定义了这些目录权限,因此它们不适用,john.com/alice因为没有通过<VirtualHost>与 Alice 对应的块的上下文访问该目录。就服务器而言,别名正在合法地访问文件系统中的某个目录。碰巧它与不同虚拟主机的根目录相同。

    从文档中:

    节内的节在虚拟主机定义之外的相应节之后应用。这允许虚拟主机覆盖主服务器配置。

    但是,由于它与您的特定情况有关,重要的是要注意,只有VirtualHost在实际调用与所讨论的部分相对应的上下文时才会真正发生这种情况,而不是在这里。

    有几种方法可以解决这个问题。最简单的方法是在服务器上下文中简单地声明AllowOverride All指令(即..不在 a 、甚至另一个块中。VirtualHost.htaccessDirectory

    <Directory "/var/www/alice.com">
        Options Indexes FollowSymLinks
        Require all granted
        AllowOverride All
    </Directory>
    

    再次注意,因为您正在声明AllowOverride All,所以您现在可以在该目录中的文件中修改这些设置.htaccess,而不管从哪个VirtualHost上下文访问该目录。

    如果您想变得花哨,并且在/var/www/alice.com从的虚拟主机上下文中访问时死心塌地,您总是可以将uri 配置为'd to 。john.comalice.comjohn.com/aliceProxyPasshttp://alice.com

    <VirtualHost "*:80">
        ...
    
        <Location "/alice">
            ProxyPreserveHost Off
            ProxyPass http://alice.com/
        </Location>
    </VirtualHost>
    

    您需要为上述启用mod_proxy和mod_proxy_http,但它会满足您对这个特定用例的要求,尽管我会小心依赖Location指令,因为文档在详细描述方面做得很好。

    • 1

相关问题

  • 基本的 apache 别名问题

  • 如何配置 Windows 机器以允许与 DNS 别名共享文件

  • 无法让 Zsh 不建议修复别名

  • 目录别名与配置文件中的变量

  • 有用的 bash 别名和生成最常用命令的列表

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve