本文介绍了使用主机名的码头工人容器访问Apache服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用Apache 2.4.6和CentOS泊坞窗容器中运行的Web应用程序;这个应用程序反过来会谈其他几个Docker容器如通过泊坞窗链接后端服务和MySQL。我可以连接到应用程序容器在本地使用boot2docker VM,即 http://192.168.59.103:80/ 的IP地址。不过,我想是一个子域,即 http://test.mydomain.com 能够访问在本地通过一个域名。原因是该应用程序使用 $ _ SERVER ['HTTP_HOST'] 变量进行身份验证请求,并反过来,后端服务使用 HTTP_ORIGIN 头验证从Web应用程序请求从一个有效的子域的到来。因此,在浏览器中测试应用程序时,我需要它来正确地发送这些HTTP标头。我只需要为当地的环境,不部署(专门用于运行针对应用程序的持续集成测试的目的)进行配置。我真的不知道该怎么做来配置我的本地系统(OS X小牛)和CI环境(Ubuntu的12.04),以使域名进行访问。

这是我目前的配置:

的httpd.conf

 <虚拟主机*:80>
    DocumentRoot的/无功/网络/网站
    ServerAlias​​ 172 *
    服务器名mydomain.com
    UseCanonicalName在    <目录/无功/网络/网站>
        有FollowSymLinks
        所有的AllowOverride
        为了允许,拒绝
        所有允许
    < /目录>
< /虚拟主机>

这是命令我运行启动Web应用程序容器:

泊坞窗运行-d -p 80:80 -h mydomain.com --name网络--link的mysql:mysql的--link的memcached:--link的memcached服务:服务--link API:基API MYORG / mywebapp:制定

在此设置,我可以成功地在 http://192.168.59.103 导航到应用程序,但因为 HTTP_HOST 是IP,应用程序不解析子域名并不会验证登录。有没有一种办法可以让这么本地请求something.mydomain.com会重定向到泊坞窗容器?请问服务器名称mydomain.com 行有什么目的在Apache的配置,并在 -h mydomain.com 参数在泊坞窗运行命令?


解决方案

您可以定义一个容器的主机名和域名,并使用shell脚本来更新/ etc / hosts中为您服务。

在这里您可以找到如何某些内脏:。

有可能创建一个泊坞窗的应用程序,将听取泊坞窗API(启动和停止)和更新共享/ etc / hosts中的主机和客户之间的文件(如一个优雅的,自动化的解决方案)。在红宝石API看一看,例如:的,也许在与bjea​​nes /鬼主机管理器(github上)。结合

更新:

另一种方法是增加一个桥接网络主机上,给人一种静态的IP地址,如 192.168.33.100

在使用其接受的IP地址以及泊坞窗端口转发。在泊坞窗撰写YAML语法是:

The file /etc/hosts needs to be updated with the IP pointing to domain_url. This way can be added as many bridges having different static IP with only only modification of the /etc/hosts file per docker project.

The last solution looks the most elegant from all.

这篇关于使用主机名的码头工人容器访问Apache服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 15:58
查看更多