【问题标题】:Empty Reply from Openshift Origin Hosted Django Web Service when accessed from Outside of Openshift Cluster从 Openshift 集群外部访问时,来自 Openshift Origin 托管的 Django Web 服务的空回复
【发布时间】:2018-08-26 14:38:58
【问题描述】:

我按照说明here 设置我正在处理的 Django 项目的 OpenShift Origin 部署。一切似乎都在工作。有一个 Pod 运行一个设置了路由的服务,并且该服务是公开的。但是,当我浏览该网站时,我收到连接已重置的错误消息。使用卷曲:

curl http://my-openshift-website.com

结果

curl: (52) Empty reply from server

此外,我还目睹了以下现象:

  • 我知道为索引网页提供服务的代码在我从浏览器(或使用 curl)访问它时运行,因为当我在请求“/”页面时添加代码以创建一个空文件时,我在 pod 中看到该文件确实已创建的终端。
  • 当我尝试从 pod 终端(即从集群内)执行相同的 curl 命令时,一切正常,我得到了网页。
  • 当我尝试从 Web 浏览器访问服务时,Pod 的日志文件未注册任何内容,但当我从 Pod 终端进行访问时注册访问。

【问题讨论】:

  • 您在哪里部署您的应用程序?在 openshift cloud(免费)或 minishift 中?我已经从这个Dockerfile 在 minishift 和私有 openshift 云中部署了 Django 应用程序,没有任何问题。
  • 你在运行什么 WSGI 服务器?从 pod 卷曲应用程序时,请确保使用 curl $HOSTNAME:8080。这将确保您使用的是外部 IP 而不是 localhost。这将显示您是否正确设置了ALLOWED_HOSTS

标签: django openshift openshift-origin openshift-3


【解决方案1】:

在我看来,这是一个愚蠢的错误。我正在使用 CERN (openshift.cern.ch) 部署的 OpenShift 集群。我没有在“管理您的 CERN 网站”页面的“站点访问和权限”中将可见性设置从“Intranet”更改为“Internet”。有关此设置如何工作的附加说明:

以上Web Services中的配置页面操作默认 您的 Openshift 项目中的路线,即 Path 所在的路线 属性未定义(并且 Host 属性与 Web 服务分配的 FQDN)。

在项目中使用多个路由和/或带有路径的路由时 属性,每条路线的可见性通过独立控制 路由注释 router.cern.ch/network-visibility。这个注解 当前接受两个值:Internet 或 Intranet。没有注释(或 任何其他值)被解释为 Intranet,即路由只会是 可从 CERN 网络访问。

注释可以通过 oc annotate CLI 命令进行操作,例如 oc annotate route my-route router.cern.ch/network-visibility=Intranet

【讨论】:

    【解决方案2】:

    是否仅仅是因为注解或 DNS 映射也会促成这种行为

    也可以解释你提到的注释,因为我试图寻找这些注释https://docs.openshift.com/container-platform/3.4/architecture/core_concepts/routes.html#route-specific-annotations但找不到

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多