取势 明道 优术

作者为 扶 凯 发表

这些天这,笔记本电脑上现代的操作系统的可以让你快速的在本地开发 web 应用程序和使用本地 IP 地址来测试.但有时我们常想测试是不是其它的人也能访问,有时你想给你的朋友展示你的应用,但不能访问,因为你是一个本地应用,你正在编写一个Web应用程序,作为一个 webhooks 回调作品.

反向HTTP
有很多的解决这个问题的方法,但是一个值得注意的就是使用反向 HTTP .他是 客户机 – 服务器 – 网关协议来通过 HTTP/1.1 来加载
这个的好处理是他使用反向的 http 连接,连接到网关服务上运行服务.所以你可以使用它来进行实际演示或测试的目的,它不在需要其它的服务器.
如果你想知道这个是怎么工作的.可以看有关的说明,为什么它被称为反向 HTTP 的原因是,您的应用程序(服务器)会在后端作为 long-poll HTTP client 和网关服务器交互让网关代为发送请求和响应的行为.这听起来复杂,但同时,它真的很简单:)

Plack::Server::ReverseHTTP
Plack::Server::ReverseHTTP 是 Plack 服务器在后端执行反向的 HTTP 协议的.所以你的 PSGI 的应用就可以从外面访问这个反向网关的服务器.
使用反向 HTTP ,请求需要的模块然后运行.

$ plackup -s ReverseHTTP -o yourhostname --token password \
-e 'sub { [200, ["Content-Type","text/plain"], ["Hello"]] }'
Public Application URL: http://yourhostname.www.reversehttp.net/

-o 是 plackup 中 –host 的别名(因为 -h 被 –help 占用了).你需要指定你使用的域名,为了安全,你也要提供一个通用密码,以便只有认证的人才能使用.你可以省略这个选项,如果你真的想任何人都可以使用这个连接过来.
这时 console 会显示连接的地址和 URL ,打开你的浏览器,会见到显示 Hello ,对吗?

 

使用框架
当然.因为使用了 PSGI 的后端指定的服务器.你也能使用在任何框架上.比如我们使用 Catalyst 的应用.

$ catalyst.pl MyApp
$ cd MyApp
$ ./scripts/myapp_create.pl PSGI
$ plackup -o yourhost --token password ./scripts/myapp.psgi

在这.默认的 Catalyst 应用,是通过 http://yourhost.reversehttp.net/ 来打开的.
注意
反向的 HTTP 的网站服务是一个实验性的服务.没有 SLA 和其它的.所以我不认为能提供给生产环境使用.但这真的可以帮我很有效的进行测试.用来展示给你的外网的朋友们,其它的解决的方法,可以看看 SSH 和 VPN 连接.

这是我的译文,原文件链接:http://advent.plackperl.org/2009/12/day-20-access-your-local-app-from-the-internet.html

 

来了就留个评论吧! 没有评论