Apache:URL

时间:2016-02-26 12:44:01

标签: apache sockets unix proxy

我正在构建一个设置,其中一个主机运行一堆Docker容器来测试不同的代码分支,我想访问容器中正在运行的web服务器。

所有容器都在host上运行。每个容器通过主机上的unix插槽服务于web应用程序,例如, /var/sockets/<socket_name>

我想要的是host上的apache基于url代理容器,这样当我GET https://<host>.com/<socket_name>/my_url时,apache代理<socket_name>请求:{{1} }。也就是说,它识别url中的套接字名称,重写url并将其发送到该套接字。

这可能吗?我仍在阅读文档,但似乎无法找到任何提示

1 个答案:

答案 0 :(得分:4)

基于网络上的各种文档,我们的想法是分两步包含mod_proxymod_rewrite,即处理URL以提取套接字名称并在没有该部分的情况下重写,和代理应根据新的(缩短的)URL和套接字名称完成。

以下是 的样子:

RewriteEngine On
RewriteRule      /(.*)/(.*)  http://%{HTTP_HOST}/$2    [P]
ProxyPass        /           unix:/var/sockets/$1.sock|http://%{HTTP_HOST}/
ProxyPassReverse /           unix:/var/sockets/$1.sock|http://%{HTTP_HOST}/

我在(.*)表达式上提出我的建议,这些表达式将提取感兴趣的两个参数。然后我们重写URL,并通过P标志表示结果将传递给代理。稍后我们指定两个相同的ProxyPassProxyPassReverse并指定Unix套接字路径,管道|分隔符和主机基址。

我希望这可以起作用,或者至少给你一些关于我们应该寻找什么的草图。