Apache背后的公司代理


Apache behind corporate proxy

我正在开发一个php应用程序。我用的是wamp,我是公司代理。我使用cntlm来验证NTLM。我需要curl google geocoding api,为了做到这一点,我使用了以下正在工作的设置:

    curl_setopt($ch,CURLOPT_PROXY, '127.0.0.1:3128');
    curl_setopt($ch, CURLOPT_PROXYPORT, 3128);

我想找到一种方法来避免为CURL设置这些选项。我相信我可以玩Apache设置,但我不确定。我需要找到这个解决方案的原因是:

  1. 在生产环境中将没有这样的代理(目前只有在环境变量设置为DEV env时才使用上述选项,但仍然不是最佳解决方案)
  2. 如果我想使用第三方SDK(如facebook php SDK),这些内部使用CURL,但他们不一定公开方法来改变CURL选项(例如facebook SDK没有)。我不想改变SDK源代码来适应我的代理

我试过了:

到目前为止,我在apache上打开了proxy_module,并在httpd.conf中添加了以下行,但没有成功

ProxyRemote * http://127.0.0.1:3128

我还是不能上网。我在谷歌上搜索了很多,但我找不到解决方案,有什么想法吗?

我发现很多人都在谈论同样的问题,但我没有找到任何全面的解决方案,因此我提出赏金。

发现:

有这个错误,我发现:但我不确定这是否会为curl工作,无论如何我找不到如何修改php.ini

[2010-12-20 14:03 UTC]jani@php.net-Summary:修改默认的http-wrapper添加php.ini选项来设置包装器的默认代理-包:功能/变更请求+包:流相关-PHP版本:5CVS+PHP版本:*

[2011-04-05 11:29 UTC] play4fun_82 at yahoo dot com嗨,我有同样的问题。我的解决方案是通过代理服务器与cntml隧道的工具。您配置cntml代理来转发http请求在本地主机上以适当的端口接收到目的地身份验证。

在梨中,你只需配置

梨配置设置http_proxy 127.0.0.1:3128

3128 -在cntlm中配置的端口(它可以是任何其他空闲端口)。

Thanks very much

您说您希望在WAMP上实现此功能,仅用于您的开发计算机,对吗?SDK在生产环境中无需修改即可工作,因此您可以利用windows的Host文件来重定向请求。

看完这篇文章后,我正打算认输,但实际上有一个简单的解决方案。我不得不使用windows环境变量,最后将系统变量设置为https_proxy=https://localhost:3128工作了!之前它不能工作,因为我把它设置为127.0.0.1:3128。运行命令

reg query "HKEY_CURRENT_USER'Software'Microsoft'Windows'CurrentVersion'Internet Settings" | find /i "proxyserver"

然后在系统变量中复制/粘贴答案,现在它工作了!!

我认为你可以通过代理工具,如Proxifier(http://www.proxifier.com)。

当然,它们可以从选定的应用程序捕获流量并自动重定向到代理。

不是一个完美的解决方案,但应该在开发机器上有用。