我正在尝试配置和apache服务器充当代理并遇到一些问题。
我想要的是能够从家用计算机向服务器上运行的apache发出请求,并让apache将此请求转发到最终目的地。
请求必须看起来好像来自服务器,并且必须携带从我的家用计算机传递到apache服务器的基本身份验证标头。
我尝试过使用mod_proxy,只是:
ServerName proxy.server.com
ProxyRequests On
ProxyVia Block
RewriteEngine on
<Proxy *>
Order deny,allow
Allow from all
SetEnv proxy-chain-auth
SetEnv proxy-sendcl
</Proxy>
ProxyPass / http://api.finaldestination.com/v1/
ProxyPassReverse / http://api.finaldestination.com/v1/
这很好,除了最终目标服务器正在重定向我(302个响应)所以我假设它正在接受请求URL是proxy.server.com而不是api.finaldestination.com的事实。
我也尝试过RewriteRule
RewriteRule ^something/(.*)$ http://api.finaldestination.com/v1/something/$1 [P]
但是现在基本身份验证标头没有通过,我从api.finaldestination.com获得了404
我显然遗漏了一些明显的东西 - 有人可以帮忙吗?
我正在使用Ubuntu 12.04
答案 0 :(得分:1)
以下是您可以尝试的方法[因为您有ubuntu 12.04步骤适用于此操作系统]
运行以下命令安装build-essential软件包:
aptitude install -y build-essential
然后照顾其他模块
aptitude install -y libapache2-mod-proxy-html libxml2-dev
激活模块
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html
现在编辑文件/etc/apache2/sites-enabled/000-default.conf
使用gedit或vi编辑器编辑文件
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://api.finaldestination.com/v1/
ProxyPassReverse / http://api.finaldestination.com/v1/
ServerName localhost
</VirtualHost>
确保其他所有内容都是默认的,从开始。
现在,代理服务器的所有内容都将传递给&#34; http://api.finaldestination.com/v1/&#34;这是你的意图。
现在在302重定向中你需要在&#34; http://api.finaldestination.com/v1/&#34;上进行PUT Rewrite ON网络服务器 &安培;你可以在.htaccess文件上管理的其他一切
一旦你通过这个,那么你可以为代理身份验证部分 通过
<Location />
AuthType Basic
...
</Location>
根据您计划使用的身份验证,身份验证可能会有所不同
您可以参考示例 Here
在某些情况下,我使用了以下内容
<VirtualHost *:80>
ServerName domainname.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyErrorOverride On
ProxyPass / http://target-url/
ProxyPassReverse / http://target-url/
<Location />
AuthType basic
AuthBasicAuthoritative Off
SetEnv proxy-chain-auth On
Order allow,deny
Allow from all
</Location>
</VirtualHost>