【问题标题】:Docker tomcat 7 - welcome page access forbiddenDocker tomcat 7 - 欢迎页面访问被禁止
【发布时间】:2015-03-23 23:29:21
【问题描述】:

我几乎什么都试过了。

当我通过 ssh 和 curl localhost:8080 转到 docker 容器时,我会看到正常的欢迎页面,但如果我通过 ssh 从我的主机或使用我的主机的主机名从其他所有东西执行curl host_machine_hostname:8082,我会收到错误,禁止访问。

我已经阅读了很多建议,但没有任何帮助。

没有地址的连接器设置没有帮助,带有allow=".*" 的Valve 规则没有帮助,主机地址=host_machine_hostname" 没有帮助。

UPD

对不起。我意识到了问题的根源。我正在使用 tomcat 的自定义分支,并且在允许 127.0.0.1 和 localhost 时,ROOT 和其他预安装的软件包有特定的选项来阻止所有内容。因此,我通过删除特定于包的 context.xml 文件来解决这个问题。

这是因为 webapps/{package}/META-INF/ 中的 context.xml 被修改为阻止一切,如果要读取 TFM,包的 context.xml 比全局 context.xml 文件更强大,这就是为什么我无法更改任何内容修改全局 context.xml。

【问题讨论】:

  • 如果您尝试从主机访问容器内的应用程序,首先执行docker ps并获取特定图像的容器ID。然后docker inspect <container_id>。在NetworkingSettings 部分,您将看到容器的IPAddress。然后你可以使用 curl IPAddress:8082 。我假设你在容器外暴露了 8082 端口。
  • 第一个示例中的端口为 8080,第二个示例中的端口为 8082。您的 Tomcat 是否同时发布?
  • @HüseyinBABAL 不,它不起作用。从主机终端使用容器 ip 也因access forbidden 而失败。是的,我已经映射了端口。 0.0.0.0:8082 -> 8080。我需要让它从主机外部访问,因为它只是我的工作服务器,所以它必须可以从其他任何地方访问。
  • @Bryan 我在 docker 容器中使用 tomcat。当我通过 ssh 在容器内时,我可以 curl localhost:8080 并获得正常页面。当我在主机的 ssh 上(服务于 docker 容器)时,当curl localhost:8082 时,我无法访问 tomcat 页面并获得access forbidden。端口不同,因为我已将主机端口 8082 映射到容器内的端口 8080。我通过设置 docker 参数 -p 8082:8080 做到了这一点
  • 您的 docker 安装了哪个操作系统> 您在 linux 上使用的是 boot2docker 还是纯 docker?你在使用公共 docker 镜像吗?我也可以测试一下看看问题。

标签: linux tomcat tomcat7 docker


【解决方案1】:

我意识到了问题的根源。我正在使用 tomcat 的自定义分支,并且在允许 127.0.0.1localhost 的情况下,ROOT 和其他预安装的软件包有特定的选项来阻止所有内容。因此,我通过删除特定于包的 context.xml 文件来解决这个问题。

这是因为 webapps/{package}/META-INF/ 中的 context.xml 被修改为阻止一切,如果要读取 TFM,包的 context.xml 比全局 context.xml 文件更强大,这就是为什么我无法更改任何内容修改全局 context.xml。

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2012-04-20
    • 2017-07-08
    • 2021-01-08
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多