Apache:代理到 URL 中命名的 unix 套接字

标签 apache sockets unix proxy

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

所有容器都在 host 上运行.每个容器通过主机上的 unix 套接字为 Web 应用程序提供服务,例如/var/sockets/<socket_name> .

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

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

最佳答案

基于网络上的各种文档,这个想法是包含 mod_proxymod_rewrite分两步处理,即对URL进行处理,提取socket名称,去掉那部分重写,根据新的(缩短的)URL和socket名称进行代理。

这是它的样子:

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 套接字路径,管道 |分隔符和主机基地址。

我希望这可以奏效,或者至少给你一些我们应该寻找什么的草图。

关于Apache:代理到 URL 中命名的 unix 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652073/

相关文章:

java - '(' or '['UNIX下预期编译错误

unix - 如何在 Unix 中删除文件中的重复行而不对其进行排序

unix - 如何对字符串中的字符进行排序?

apache - Ambari 2.2 - 在 Ubuntu 14.04 Docker 容器上以非零状态代码退出

apache - Hadoop生态系统部署步骤

c# - 使用GPRS的WM6 socket

Java Socket RPC 协议(protocol)

apache - 多个 .htaccess 文件中多个 mod_rewrite 规则的优先级是什么?

apache - 如何配置 apache 服务器与 HTTPS 后端服务器通信?

c - libnet tcp header 结果全为零