在我的应用程序中我使用以下重写规则:
RewriteRule ^/ajax(.*) http://api.externalserver.com/$1 [P,QSA,L]
现在的问题是我的企业网络要求我使用 HTTP 代理进行外部互联网连接。
举例来说,这不起作用:
curl -v http://api.externalserver.com/login
但这有效:
curl -v -x 11.22.11.22:8585 http://api.externalserver.com/login
如何让 Apache 使用公司代理来处理外部互联网请求?
答案1
我认为您需要启用mod_proxy_http
并设置:
ProxyRemote * http://11.22.11.22:8585
在您的虚拟主机配置中的某处。
答案2
您可以以透明模式安装 SQUID 代理来代理从本地机器到互联网的所有流量。
首先添加 iptables 规则
iptables -t nat -A OUTPUT -p tcp --dport 5555 -j DNAT --to 127.0.0.1:3128
这会将所有传出的 http 连接重定向到本地 squid。然后根据以下内容配置 squid指导并另外配置
cache_peer 11.22.11.22 parent 8585 0 no-query default
never_direct allow all
就这样。所有到端口 80 的传出流量都将通过您的组织代理
答案3
您是否尝试过通过 proxytunnel 或 corkscrew 进行 http 隧道传输?
您需要为您的 Apache 配置一个 vhost 并将其用作远程代理。
也许调整这个可以帮助你:http://dag.wieers.com/howto/ssh-http-tunneling/
答案4
设置ProxyRemote
并重启后httpd
,如果出现“[错误](13)权限被拒绝:代理:HTTP:尝试连接失败”,那么您还需要执行以下操作:
setsebool -P httpd_can_network_connect=1