配置 Apache 使用企业代理来处理外部 Web 请求

配置 Apache 使用企业代理来处理外部 Web 请求

我的内联网上运行着一个 Apache Web 服务器。

我想所有外部 HTTP/HTTPS 请求从我的 Apache Web 应用程序使用我公司的内部网代理。

环境

  • Linux v2.6.32-504.12.2.el6.x86_64
  • 红帽 v4.4.7-9
  • Apache v2.2.15

我已启用以下模块httpd.conf

  • proxy_module
  • proxy_connect_module
  • proxy_http_module

网址

  • 网站是 internal.company.com (http)
  • 代理是 proxy.company.com:1234 (http)
  • 外部资源是 external.site.com (https)

手动指定代理可以curl按预期工作:

curl -x proxy.company.com:1234 -L external.site.com

这些似乎都不起作用:

1.

ProxyRequests Off

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass external.site.com proxy.company.com:1234
ProxyPassReverse external.site.com proxy.company.com:1234

2.

ProxyRequests On
ProxyRemote external.site.com proxy.company.com:1234
NoProxy .company.com

3.

ProxyRequests On
ProxyRemote * proxy.company.com:1234
NoProxy .company.com

我也尝试了上述设置的各种组合。有关 Intranet 代理的 Apache 文档也没有太大的帮助。

非常感谢您的帮助!

答案1

Apache Web 应用程序

Apache 不会运行您的 Web 应用程序,而是运行您的应用程序的 PHP 或其他处理程序之类的程序。Apache 接受连接,然后如果目标 URL 与脚本处理程序匹配,则将 HTTP 数据传递给脚本处理程序,然后将输出返回给请求连接。Apache 并不真正控制脚本处理程序除了它返回的 HTTP 或其他数据之外所执行的操作。

您正在使用的选项用于设置反向代理,这与传出的 HTTP 代理不同。

您必须配置 Web 应用程序本身以使用代理来处理传出请求。简单搜索并没有找到一种简单的方法,让所有 PHP 应用程序都使用代理来处理传出连接,因此希望您的应用程序支持这一点。

相关内容