我需要在一台服务器上与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-For和X-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网站的常见问题的更多信息,请参阅: