我需要将指定端口的所有流量转发到Apache中的Unix域套接字:
在sites-enabled/000-default.conf
文件中,我已经定义了一个虚拟主机:
<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
我同时启用了proxy
和proxy_http
模块:
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正确重新加载,但转发不起作用,错误日志显示:
[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套接字?
a2enmod proxy_wstunnel
和unix:///...
。我的配置和你一样,它可以正常工作。 - mi0