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

11

我目前正在使用 JavaScript(Sencha)在我的 Mac 上开发一个与 http REST 服务交互的应用程序。

该服务已经在其他地方(另一个域)设置好了,我无法对其进行控制。由于我正在自己的 Mac 上开发应用程序,所以 http 请求目前是跨域的,因此除非我禁用浏览器安全性,否则它们将无法工作。

我的一个朋友在 PC 上工作,他的解决方案是使用 Apache 设置反向代理,这样使得应用程序(其域名为 localhost)认为服务的域名也是 localhost。我不完全了解他的意思,也不知道如何在我的 Mac 上执行此操作。有什么建议吗?

2个回答

8
对于那些寻求强大且免费解决方案的人,mitmproxy 可以作为 反向代理。它是一个命令行工具,但带有交互式CLI,并提供Web界面。您可以直接 在此处下载 它,它只是一个单一的二进制文件。
要将其作为反向代理运行,只需使用以下命令运行它: ./mitmproxy --mode "reverse:https://real-destination.example.com" 然后让您的客户端连接到 https://localhost:8080。所有请求都将转发到 https://real-destination.example.com 并且TLS被拆开,因此您可以查看数据包(通常您必须 安装mitmproxy的CA证书 并将其标记为受信任,以使其正常工作)。

对于那些寻求具有交互式用户界面的解决方案,更高级别的解决方案可以为您完成所有系统配置工作,而且不介意为此花费一些钱的人,Charles也可以充当反向代理,并允许您从UI应用程序中配置所有内容。 Charles也可在App Store上提供iOS版本。


5

Apache确实可以做反向代理,但基于您的利益考虑,我建议您不要选择Apache(它过于庞大)。

虽然有很多事情可以做,但我个人会安装Nginx Web服务器并更改配置以使用proxy_pass。这并不是特别困难,但如果您已经知道如何从源代码构建软件,则非常简单。快速搜索引擎可以找到关于此的指南 - 然后,您只需要根据需要更改./conf/nginx.conf文件即可。

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


请原谅我的无知,但是否有任何使用Mac内置的Web共享来完成这个任务的方法? - Groppe
我不这么认为。即使有内置的反向代理,也很可能需要一个完整的Web服务器。您想避免XSS,因此需要将自己的代码托管在服务器上;这意味着您需要修改请求(Nginx使其相对简单),以便您可以将访问其服务器的权限放置在您的一个目录中。我必须承认,这并不像应该的那样简单,但比没有好... - John Chadwick
服务位于https地址是否会引起任何问题? - Groppe
抱歉我没有回复;也许吧,但如果我记得正确的话,使用反向代理从HTTP转换到HTTPS不应该有任何问题。 - John Chadwick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接