如何使用apache重定向到docker容器

yam*_*yam 2 apache ubuntu tornado docker

我有两个运行Tornado应用程序的docker容器app1,app2在Ubuntu VM上命名.VM具有域名ubuntu.somesite.com.我可以使用docker port forwarding at访问其中一个ubuntu.somesite.com:8080.相反,我希望可以在ubuntu.somesite.com/app1和访问这两个应用程序ubuntu.somesite.com/app2.实现这一目标的最佳方法是什么?我尝试使用apache虚拟主机,但没有走得太远.

whi*_*s11 6

您需要在主机网络上公开两个docker容器,当然还有两个不同的端口(比方说8080和8081).

比您在主机中需要反向代理.Apache 2.4是一种可能的选择.你可以像这样使用虚拟主机:

<VirtualHost *:80>
  ServerName ubuntu.somesite.com

  <Location />
    Order allow,deny
    Allow from all
    Require all granted
  </Location>

  ProxyPass /app1 http://127.0.0.1:8080/
  ProxyPassReverse /app1 http://127.0.0.1:8080/

  ProxyPass /app2/ http://127.0.0.1:8081/
  ProxyPassReverse /app2/ http://127.0.0.1:8081/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

请注意,此配置不适用于apache 2.2或更早版本.

  • 执行此操作后,如果您收到错误消息“Invalid command 'ProxyPass'”,只需运行“sudo a2enmod proxy_http”,它就会开始工作 (3认同)