我的要求很简单。我在Apache中有一个转发代理,客户端向此转发代理发送SOAP调用。此代理需要能够将URL重写为其他内容,并将请求转发给另一个代理。
到目前为止,这是我的配置:
<Proxy *>
Order Allow,Deny
Allow from all
RewriteEngine on
RewriteRule "^(.*)" "https://test.salesforce.com/services/Soap/u/20.0" [P]
</Proxy>
AllowCONNECT 80 443 553 22
# This is the main proxy configuration
ProxyPass /Salesforce http://user:pwd@10.54.167.70:80/ retry=1 acquire=3000 timeout=600 Keepalive=On
ProxyPassReverse /Salesforce http://user:pwd@10.54.167.70:80/
我不确定我的重写规则是否完全正确。你可以确认一下吗?
答案 0 :(得分:1)
配置看起来非常难看,我不确定你要做什么,但是,它看起来真的只是你试图反向代理,而不是转发代理,我会尝试尽我所能帮助解决错误。
重写,如果你想捕捉一个群组,我猜你想稍后再使用它:
RewriteRule ^(.*) https://test.salesforce.com/services/Soap/u/20.0/$1 [P,L]
但是为什么要重写?,你正在使用P标志,用于代理,你正在尝试那里不是重写,这是一个反向代理,所以为什么不呢:
ProxyPass / https://test.salesforce.com/services/Soap/u/20.0/
AllowConnect,这是为了允许SSL转发代理连接,为什么要指定端口80?您希望他们也通过SSL吗?看起来非常错误。
AllowCONNECT 443 553 22
关于你的最后一个指令,你需要匹配斜杠才能正常工作,并且首先应该更具体地指定反向代理连接。首先,确保您确实需要转发代理,但在转发代理中,您可以允许/禁止后端,但如果您指定后端是反向代理,则不要指定后端:
这就是我要解释你想要的东西,删除所有正向代理相关的指令:
ProxyPass /Salesforce/ http://user:pwd@10.54.167.70/ retry=1 acquire=3000 timeout=600 Keepalive=On
ProxyPassReverse /Salesforce/ http://10.54.167.70/
SSLProxyEngine on
ProxyPass / https://test.salesforce.com/services/Soap/u/20.0/
ProxyPassReverse / https://test.salesforce.com/services/Soap/u/20.0/
如果您可以进一步指定&#34;转发代理&#34;可以改进此答案。部分你提到。