Apache代理传递到Unix域套接字

vwoqyblh  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(215)
    • 我 需要 将 所有 流量 从 指定 端口 转发 到 Apache 中 的 Unix 域 套接 字 : * *

sites-enabled/000-default.conf 中 , 我 定义 了 一 个 VirtualHost :

<VirtualHost *:8091>
    ProxyRequests Off
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyPass / unix:/var/lib/jenkins/workspace/myproject/mysocket.sock|http://127.0.0.1/
    ProxyPassReverse / unix:/var/lib/jenkins/workspace/myproject/mysocket.sock|http://127.0.0.1/
</VirtualHost>

中 的 每 一 个
ports.conf 中 , 我 有 :

Listen 80
Listen 8091

格式
我 同时 启用 了 proxyproxy_http mods :

krzysiek:/etc/apache2$ a2enmod proxy
Module proxy already enabled
krzysiek:/etc/apache2$ a2enmod proxy_http
Module proxy already enabled

格式
我 使用 的 是 Apache 2.4.7 , 官方 文档 指出 :
在 2.4.7 和 更 高 版本 中 , 通过 使用 在 unix :/path/lis . sock 前面 添加 的 目标 , 可以 支持 使用 Unix 域 套接 字|

    • 重新 加载 Apache 时 出现 错误 : * *
krzysiek:/etc/apache2$ sudo service apache2 restart
* Restarting web server apache2                                [fail] 
* The apache2 configtest failed.
AH00526: Syntax error on line 64 of /etc/apache2/sites-enabled/000-default.conf:
ProxyPass URL must be absolute!

格式
我 试 着 改变 :

ProxyPass / unix:/var/(...)

格式
收件人 :

ProxyPass / unix:///var/(...)

格式
然后 Apache 重新 加载 正确 , 但 转发 * * 不 起 作用 * * , error.log 显示 :

[proxy:warn] [pid 22436] [client 10.0.4.19:47662] AH01144: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

格式
你 能 解释 一下 我 做 错 了 什么 吗 ? 或者 我 如何 正确 地 将 流量 从 端口 转发 到 Apache 上 的 unix 套接 字 ?

pgpifvop

pgpifvop1#

可能有点晚🙂了,但下面的apache配置对我很有效:

ProxyRequests off
    Define SOCKET_NAME /path/to/my.sock
    ProxyPass        / unix:${SOCKET_NAME}|uwsgi://%{HTTP_HOST}/
    ProxyPassReverse / unix:${SOCKET_NAME}|uwsgi://%{HTTP_HOST}/

并加载了模块proxyproxy_uwsgi

重要不要将套接字放在/tmp中(我认为出于安全原因,systemd会阻止apache进程直接访问它)。

此外,还要注意文件权限。

相关问题