2014-10-29 59 views
1

我想配置和Apache服务器充当代理,并有一些问题。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 ^something/(.*)$ http://api.finaldestination.com/v1/something/$1 [P] 

但现在的基本认证头不获得通过,我从收到了404 api.finaldestination.com

显然我丢失的东西在这里很明显 - 任何人都可以帮忙?

我使用的Ubuntu 12.04

+0

您是否取消注释apache.conf或httpd.conf文件中代理mod行的加载模块部分 – Ashish 2014-10-29 13:54:55

+0

您需要在启动时加载模块然后在虚拟主机块中加载模块,您需要输入正确的条目。 – Ashish 2014-10-29 13:55:55

+0

我用a2enmod代理和a2enmod重写 - 我的httpd.conf只是一个VirtualHost块,其中包含上面的代码。 – freeloader 2014-10-29 14:20:08

回答

1

这里是你如何可以尝试[既然你的Ubuntu 12.04步骤是这个OS]

运行以下命令来安装建立必要的包:

aptitude install -y build-essential 

然后采取其它模块的护理

aptitude install -y libapache2-mod-proxy-html libxml2-dev 

激活米odules

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> 

确保一切仍然是从开始的默认值。

现在,所有进入代理服务器的内容都将传递到“http://api.finaldestination.com/v1/”这是您的意图。

现在302重定向,你需要把重写就“http://api.finaldestination.com/v1/” Web服务器 &一切你可以管理。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> 
+0

感谢这 - 这个作品...达到某一点。似乎最终目的是看到原始请求源于它阻塞的国家。要清楚Apache代理可以做出成功的请求(通过curl),但是当我从我的机器发送请求时,通过代理我被阻止,并且响应表示INVALID_COUNTRY。所以接下来的问题是,我怎样才能阻止原始请求通过最终目标的任何暗示? – freeloader 2014-11-06 12:43:18