公司代理背后的Apache

时间:2015-09-28 11:15:50

标签: php apache curl proxy sdk

我正在开发一个php应用程序。我正在使用wamp,而且我在公司代理之后。我正在使用cntlm来验证NTLM。我需要卷曲谷歌地理编码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源代码以适合我的代理
  3. 我尝试了什么:

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

    ProxyRemote * http://127.0.0.1:3128
    

    我仍然无法访问互联网。我google了很多,但我找不到解决方案,任何想法?

    我可以找到很多人谈论同一个问题,但我没有找到任何全面的解决方案,因此我提出了赏金。

    我找到了什么:

    我发现this bug:但我不确定这是否适用于卷曲,无论如何我找不到如何修改php.ini

      

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

      

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

         

    在梨你只需配置

         
        

    pear config-set http_proxy 127.0.0.1:3128

      
         

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

    非常感谢

3 个答案:

答案 0 :(得分:2)

你是说你想在WAMP上使用这个功能,仅适用于你的开发计算机,对吗? SDK的工作无需修改,因此您可以利用Window的主机文件重定向请求。

Here's a walkthrough

答案 1 :(得分:0)

我认为您可以通过代理工具(如Proxifier(http://www.proxifier.com)来实现。

AFAIK,他们可以捕获来自所选应用程序的流量并自动重定向到代理。

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

答案 2 :(得分:0)

阅读this文章之后,我即将放弃,但实际上有一个简单的解决方案。我不得不玩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"

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