用Apache与Apache WSGI并行运行Docker

我需要在一台服务器上与Apache并排运行Docker。 Apache目前有几个虚拟主机,Docker有一个特定的Python版本的Apache和WSGI。

我需要将它们一起设置,而不必更改已经存在的很多虚拟主机的configuration。 基本上我需要从容器转发端口80作为Apache虚拟主机或东西。

有任何想法吗?

听起来像你想要的东西像:

<VirtualHost *:80> ServerName host.example.com ProxyPass / http://docker.example.com:1234 ProxyPassReverse / http://docker.example.com:1234 </VirtualHost> 

host.example.comreplace为虚拟主机的实际主机名。

docker.example.comreplace为Docker主机的实际主机名或IP。 如果主机相同,则可以使用localhost

1234replace为Docker为运行WSGI应用程序的容器导出的端口。

您的WSGI应用程序将不得不关注在代理时由前端Apache设置的X-Forwarded-ForX-Forwarded-Host头。 如果你的WSGI应用程序不能这样做,那么使用mod_wsgi可能是一个好主意,因为它有内置的支持来处理这个。

可以在以下位置findmod_wsgi的Docker镜像:

你需要提供给mod_wsgi-express的附加选项是:

 --trust-proxy-header X-Forwarded-For --trust-proxy-header X-Forwarded-Host 

如果修复程序没有完成,原来的虚拟主机名和端口在WSGI环境或WSGI应用程序中以其他方式更新,则WSGI应用程序在构build用于页面和响应标头的URL时将不会生成正确的价值。

如果你不止于此,你将不得不解释一下。

如果您想使用mod_wsgi Docker镜像,请参阅Docker Hub页面以及从中链接的博客文章。 然后在需要更多帮助的情况下跳转到mod_wsgi邮件列表。


有关将Apache代理到使用mod_wsgi的后端Python网站的常见问题的更多信息,请参阅: