使用基本身份验证的Apache代理/重写

使用基本身份验证的Apache代理/重写,apache,mod-rewrite,proxy,mod-proxy,Apache,Mod Rewrite,Proxy,Mod Proxy,我正在尝试配置和apache服务器作为代理,但遇到了一些问题 我想要的是能够从我的家庭计算机向服务器上运行的apache发出请求,并让apache将该请求转发到最终目的地 请求必须看起来像来自服务器,并且必须携带从我的家用计算机传递到apache服务器的基本身份验证头 我尝试过使用mod_proxy,只是: ServerName proxy.server.com ProxyRequests On ProxyVia Block RewriteEngine on <Proxy *>

我正在尝试配置和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/
但是现在基本的身份验证头没有通过,我从api.finaldestinition.com得到了一个404

我显然错过了一些显而易见的东西——有人能帮忙吗


我正在使用Ubuntu12.04

以下是您可以尝试的方法[既然您有Ubuntu12.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>

代理主机
ProxyPass/http://api.finaldestination.com/v1/
ProxyPassReverse/http://api.finaldestination.com/v1/
服务器名本地主机
确保所有其他内容都保持从一开始的默认设置

现在,到代理服务器的所有内容都将传递到“”,这是您的意图

现在在302重定向中,您需要在“”Web服务器上进行重写 &可以在.htaccess文件上管理的所有其他内容

完成此操作后,就可以使用代理身份验证部分了 通过


AuthType Basic
...
身份验证可以根据您计划使用的身份验证而有所不同

你可以参考一些例子

在某些情况下,我用下面的东西

<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>

ServerName域名.com
代理请求关闭
命令拒绝,允许
通融
ProxyErrorOverride打开
ProxyPass/http://target-url/
ProxyPassReverse/http://target-url/
AuthType basic
授权关闭
SetEnv代理链身份验证打开
命令允许,拒绝
通融

您是否在apache.conf或httpd.conf文件中为proxy mod行取消了加载模块部分的注释?您需要在开始时加载模块,然后在虚拟主机块中输入正确的条目。我使用了a2enmod proxy和a2enmod rewrite-我的httpd.conf只是一个包含上述内容的VirtualHost块。您正在使用哪个操作系统平台?我正在使用Ubuntu12.04谢谢你-这很有效。。。在一定程度上。最终目的似乎是看到原始请求来自它所阻止的国家。为了清楚起见,apache代理可以发出一个成功的请求(通过curl),但是当我通过代理从我的机器发送请求时,我被阻止了,响应说无效。所以下一个问题是,我如何阻止任何原始请求的暗示进入最终目的?
<Location />
    AuthType Basic
    ...
</Location>
<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>