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