Apache Proxy:没有协议处理程序是有效的
我想代理一个子目录到另一台服务器。 我的httpd.conf:
RewriteEngine On ProxyPreserveHost On RewriteRule .*subdir/ https://anotherserver/subdir/ [P]
问题是,Apache总是logging这个:
AH01144: No protocol handler was valid for the URL /subdir/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule., referer: http://localhost/
所以在search互联网之后,我激活了这些模块:
LoadModule headers_module modules/mod_headers.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_express_module modules/mod_proxy_express.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_html_module modules/mod_proxy_html.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_scgi_module modules/mod_proxy_scgi.so LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so LoadModule rewrite_module modules/mod_rewrite.so
(我知道,我不需要所有的人,但我只是激活他们,以确保我不会错过一个)
但是这个错误仍然出现,客户端得到一个HTTP 500。
我怎样才能解决这个问题?
如果您没有启用mod_proxy_http
可能会发生这种情况
sudo a2enmod proxy_http
为了让我的基于https的负载均衡工作,我必须启用以下内容:
sudo a2enmod ssl sudo a2enmod proxy sudo a2enmod proxy_balancer sudo a2enmod proxy_http
我没有足够的业力评论…对于我的Apache2.4 + php5-fpm安装开始工作,我需要激活以下Apache模块:
sudo a2enmod proxy sudo a2enmod proxy_fcgi
不需要proxy_http
,这就是所有.php
文件直接发送到php5-fpm:
<FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost" </FilesMatch>
为了进一步说明,以上几个答案中提到的a2enmod是Debian / Ubuntu。 红帽不使用这个来启用Apache模块,而是使用httpd.conf中的LoadModule语句。
更多这里: https : //serverfault.com/questions/56394/how-do-i-enable-apache-modules-from-the-command-line-in-redhat
解决scheme/正确答案在OP的评论中:
我认为你需要mod_ssl和SSLProxyEngine与ProxyPass – Deadooshka 14年5月29日在11:35
@Deadooshka是的,这是工作。 如果你张贴这个答案,我可以接受它 – das_j 14年5月29日在12:04
在我的情况下,我需要proxy_ajp
模块。
a2enmod proxy proxy_http proxy_ajp