如何在Mac上设置反向代理?

时间:2011-11-16 14:22:15

标签: javascript macos rest extjs reverse-proxy

我目前正在Mac上开发一个JavaScript(Sencha)应用程序,它与http REST服务接口。

该服务已经存在于其他地方(在另一个域上),我无法控制它。由于我在自己的Mac上开发应用程序,http请求目前是跨域的,因此除非我禁用浏览器安全性,否则它们不起作用。

我的一位在PC上工作的朋友说,他的解决方案是使用Apache设置反向代理,以某种方式使应用程序(谁的域名为localhost)认为该服务的域也是localhost。我不完全确定他的意思,也不知道如何在我的Mac上做到这一点。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

Apache确实可以做反向代理,但是为了你自己,我建议你不要使用Apache(这是不必要的大。)

虽然您可以做很多事情,但我个人会做的是安装Nginx网络服务器并更改配置以使用proxy_pass。它并不十分困难,但如果你已经知道如何从源代码构建软件,它就会特别简单。快速google会导致a guide on exactly this - 从那里开始,您只需要根据需要更改./conf/nginx.conf文件。

专用代理软件可能是更好的解决方案,但您不需要专用代理软件的所有功能,而且您当然不需要Apache Web服务器的所有功能(或者Nginx,真的,但是Nginx至少要小一些。)

答案 1 :(得分:1)

对于那些寻求强大而免费的解决方案的人来说,mitmproxy可以充当reverse proxy。它是一个命令行工具,但具有交互式CLI,还提供了Web界面。您可以直接download it here,它只是一个二进制文件。

要将其作为反向代理运行,只需使用

./mitmproxy --mode "reverse:https://real-destination.example.com"

,然后使您的客户端连接到https://localhost:8080。所有请求都转发到https://real-destination.example.com,并且TLS被分解,因此您可以查看数据包(通常,您必须在系统上install the CA Certificate of mitmproxy并将其标记为受信任才能进行此工作)。

对于那些寻求使用交互式UI的解决方案的人,这是一个更高级的解决方案,可以为您完成所有系统配置,并且不介意为此花钱,Charles也可以充当{{3 }},它允许您从UI应用程序中配置所有内容。 Charles也可以在App Store上用于iOS。