配置 Apache 使用外部代理进行互联网连接

配置 Apache 使用外部代理进行互联网连接

在我的应用程序中我使用以下重写规则:

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

相关内容