我正在尝试使用apache作为代理服务器将某些请求重定向到在不同端口上运行的服务。我正在尝试按照此处的说明操作:http://httpd.apache.org/docs/2.4/rewrite/proxy.html
我完成了这个安装(没有别的):
sudo apt-get install apache2
sudo a2enmod rewrite
sudo a2enmod proxy
sudo a2enmod proxy_http
然后编辑/etc/apache2/httpd.conf为:
RewriteEngine on
RewriteRule ^/(.*) http://localhost:9200/$1 [P]
ProxyPassReverse / http://localhost:9200/
最后,重新启动了apache2(sudo service apache2 restart
)。最后,我将为该规则添加一些实际条件,但我现在只是想测试它。
但它不起作用。 curl -XGET localhost:80/foo
以404响应失败,curl -XGET loaclhost:9200/foo
成功。在错误日志或访问日志中没有任何用处。
答案 0 :(得分:0)
我建议将Apache反向代理命令设置为这样;请注意ProxyPass
设置以及ProxyRequests
和ProxyPreserveHost
设置:
<IfModule mod_proxy.c>
# Proxy specific settings
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:9200/
ProxyPassReverse / http://localhost:9200/
</IfModule>
我还建议您使用curl
选项检查-I
中响应输出的标题:
curl -I localhost:80/foo
它应该向您显示服务器的确切响应,以便您可以完全了解可能失败的内容以及可能有效的内容。