【问题标题】:Apache directory listingApache 目录列表
【发布时间】:2012-03-25 23:17:58
【问题描述】:

在使用服务器 IP 地址时,我无法阻止 apache 创建目录列表。我已尝试编辑相关的站点可用文件,如下所示;

<VirtualHost *:80>
    JkMount /* default
    ServerName example.co.uk
    ServerAlias www.example.co.uk
    ServerAdmin me@example.co.uk
    DocumentRoot /var/www/example.co.uk/public_html
    ErrorLog /var/www/example.co.uk/logs/error.log
    CustomLog /var/www/example.co.uk/logs/access.log combined
    <Directory /var/www/example.co.uk/public_html>
        Options -Indexes
    </Directory>
</VirtualHost>

...但是如果我使用这种格式的 url 访问服务器,则会列出 public_html 文件夹内容;

http://192.168.1.99/example.co.uk/public_html

我还尝试修改 /etc/apache2/apache.conf 中的 apache 配置文件以包含以下内容;

<Directory />
    Options -Indexes
</Directory>

..但没有快乐。

我正在使用 Tomcat,我需要我的 WEB-INF 文件夹来拒绝访问。它没有,因此可以下载任何 .class 文件。

有谁知道我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: apache tomcat ubuntu


    【解决方案1】:

    这听起来有点奇怪。 Apache Tomcat 服务器前是否有 Apache HTTPD?

    在这种情况下,Apache HTTPD 不能指向 Apache Tomcat 文件所在的目录!两者之间的通信可以更多地看作是代理而不是插件。

    为此目的,我们使用 mod_proxy_ajp 有一些很好的经验。但是,如果您能够下载 .class 文件并且(恐慌模式开启)web.xml(恐慌模式关闭),那就大错特错了。

    【讨论】:

    • 您好,Wemu,感谢您的回复。我现在使用 rkosegi 建议的“虚拟 IP”方法解决了这个问题。当我使用服务器的 IP 地址作为 url 的开头时,我只能直接访问文件。 “您在 Apache Tomcat 服务器前有一个 Apache HTTPD 吗?” - 我不知道!我正在使用 Ubuntu,我只是像往常一样安装了软件包。我怎么会发现这个?我的印象是 Apache 和 Tomcat 是独立的实体,因为我必须分别重新启动它们。这不正常吗?
    • 你好,这很正常。 Apache HTTPD 是一个网络服务器。强大、可扩展和灵活(身份验证、mods、php/perl/phyton/...),但它不能用作 Java 应用程序的 Servlet 容器。因此就有了 Apache Tomcat。两者都来自 apache.org 但不要混淆它们 - 它们完全分开,因为 apache 是一个基础而不是单一产品。所以你需要运行两个进程是正常的,监听端口 80 的 webserver 响应任何 http:// 请求和运行在不同端口上的 tomcat servlet 容器。
    • 网络服务器只是将某些请求重定向到tomcat的代理。如果通过使用 ip 地址访问 web 服务器将您带到 Tomcat 目录,我猜默认文档根指向该位置,这是不正确的。将 Apache HTTPD 配置为指向仅包含公共可读文件的目录。对于您希望 tomcat 响应的位置,请配置 mod_proxy_ajp 或 mod_proxy。在这种情况下,不需要文档根目录。
    【解决方案2】:

    这意味着它不会到达您的 VirtualHost 设置,而是默认的虚拟主机设置。

    你有 2 个选项(至少):

    1、将.htaccess文件放到你要限制列表的目录中

    2,使用与基于名称的虚拟主机类似的设置设置基于 IP 的虚拟主机

    你说你放

    <Directory />
        Options -Indexes
    </Directory>
    

    你应该有 Location 而不是 Directory 那里

    【讨论】:

    • 感谢 rkosegi!我按照您的建议修改了我的 apache.conf 文件,并且效果很好。我再也看不到目录列表了。我仍然可以导航到 .class 文件并下载它们......你知道我可以如何阻止它,但允许文件在 Tomcat 中按预期执行吗?谢谢
    • 嗨 rkosegi,我还设置了一个基于 IP 的虚拟主机,正如你所说,它也解决了我的其他问题。我无法再访问 .class 文件,因为 IP 地址重定向到 tomcat 中的另一个站点。非常感谢您的帮助。
    【解决方案3】:

    如果在末尾加上 /* 会怎样?

    <Directory /var/www/example.co.uk/public_html/*>
            Options -Indexes
    </Directory>
    

    更新: 或者尝试在 VirtualHost 指令之外添加条目。

    【讨论】:

    • 感谢您回答 Attila,但那里并不快乐。好像站点可用文件被忽略了!
    猜你喜欢
    • 2017-07-18
    • 2013-12-25
    • 2011-07-16
    • 2016-01-08
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多