Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 将运行在CloudFoundry VM上的应用程序公开到Internet_Apache_Cloud Foundry_Mod Proxy - Fatal编程技术网

Apache 将运行在CloudFoundry VM上的应用程序公开到Internet

Apache 将运行在CloudFoundry VM上的应用程序公开到Internet,apache,cloud-foundry,mod-proxy,Apache,Cloud Foundry,Mod Proxy,如果这个问题已经在其他地方被问到,我很抱歉,但我已经为此挣扎了好几天了 我正在尝试在私有服务器上设置CloudFoundry虚拟机。CloudFoundry实例运行良好,我的测试REST服务部署在路径REST上 使用ssh连接时,使用curl进行的以下测试与预期一样有效: curl rest.10.244.0.34.xip.io 我试图在私有服务器上设置apache配置,以便将部署在CloudFoundry VM上的应用程序公开给internet 我创建了一个DNS条目,如cloud.MY_P

如果这个问题已经在其他地方被问到,我很抱歉,但我已经为此挣扎了好几天了

我正在尝试在私有服务器上设置CloudFoundry虚拟机。CloudFoundry实例运行良好,我的测试REST服务部署在路径
REST

使用ssh连接时,使用curl进行的以下测试与预期一样有效:

curl rest.10.244.0.34.xip.io
我试图在私有服务器上设置apache配置,以便将部署在CloudFoundry VM上的应用程序公开给internet

我创建了一个DNS条目,如
cloud.MY_PUBLIC_IP
*.cloud.MY_PUBLIC_IP
引用
MY_PUBLIC_IP
,并希望能够使用以下两个URL之一访问部署在CloudFoundry VM上的应用程序:

  • application route.cloud.MY\u PUBLIC\u IP
  • cloud.MY\u PUBLIC\u IP/应用程序路由
防火墙已禁用

我不确定使用apache
vhost
proxy
是否可以做到这一点。 到目前为止,我创建了以下vhost配置:

<VirtualHost *:80>
 ServerName cloud.MY_PUBLIC_NAME.ch
 ProxyPass         /  http://10.244.0.34.xip.io/
 ProxyPassReverse  /  http://10.244.0.34.xip.io/
 ProxyRequests     Off

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^cloud\.MY_PUBLIC_NAME\.ch$  [NC]
 RewriteRule ^/([^/]+)/(.*)$ http://$1.10.244.0.34.xip.io/$2  [P,L]

</VirtualHost>

ServerName cloud.MY\u PUBLIC\u NAME.ch
ProxyPass/http://10.244.0.34.xip.io/
ProxyPassReverse/http://10.244.0.34.xip.io/
代理请求关闭
重新启动发动机
RewriteCond%{HTTP\u HOST}^cloud\.MY\u PUBLIC\u NAME\.ch$[NC]
重写规则^/([^/]+)/(.*)$http://$1.10.244.0.34.xip.io/$2[P,L]
cloud.MY_PUBLIC_IP
确实将我重定向到
10.244.0.34.xip.io
,但我无法访问任何已部署的应用程序


非常感谢您的帮助。

您不必将代理服务器反向转到xip.io自定义dns服务器

直接将代理反转为10.244.0.34,这是CloudFoundry代理的默认ip

然后,该代理将根据路由检查访问它的域名,并相应地重定向请求

您的Apache配置应该如下所示:

<VirtualHost *:80>
    ServerName cloud.myname.ch
    ServerAlias *.cloud.myname.ch

    ProxyPreserveHost On

    <Location />
        ProxyPass http://10.244.0.34/
        ProxyPassReverse http://10.244.0.34/
        Order allow,deny
        Allow from all
    </Location>

</VirtualHost>
域的输出应如下所示:

$ cf domains
Getting domains in org org-name as admin...
name                 status   
10.244.0.34.xip.io   shared   
myname.ch             owned   
cloud.myname.ch       owned 
对于路线,如下所示:

$ cf routes
Getting routes as admin ...

host                domain            apps   
app                 cloud.myname.ch   app  

然后您应该可以在
http://app.cloud.myname.ch

我这里没有完整的答案,但一般来说,CF安装的流量如下:浏览器->HTTP(S)->LB->HTTP->gorouter(S)->应用程序。重要的部分是a.)流量来自用户到负载均衡器b.)负载均衡器在需要时终止SSL,c.)负载均衡器转发到可能多个go路由器实例中的一个。您应该知道gorouter实例的IP地址,因为您在CF安装期间设置了它们。在您的情况下,如果HTTPD是负载平衡器,那么您需要设置ProxyPass以指向您的服务器。具体配置可能会有所不同。
$ cf routes
Getting routes as admin ...

host                domain            apps   
app                 cloud.myname.ch   app