如何在金字塔框架中建立代理机制?

时间:2015-11-13 10:17:43

标签: javascript python proxy pyramid

我有以下问题: 有金字塔应用程序的服务器,他是可见的,可以从互联网上访问。 有一个带有地图的服务器,从互联网上看不到(两个服务器都在一个本地网络中)。 应用服务器从地图服务器请求一些数据,但那些请求在javascript中写入,在客户端的机器上运行,请求由ip定向,当然是本地的(如192.168.1.28),并且从我们的本地网络用户可以看到地图,但从互联网可以。 如何创建一个工具(可能是额外的视图或类似的东西)将请求重定向到地图,以便金字塔服务器像代理一样工作,如果客户端请求映射。

像这样: 来自互联网的客户< - >金字塔< - >地图服务器

1 个答案:

答案 0 :(得分:1)

我假设你想使用Pyramid应用程序构建一个HTTP代理,虽然还不完全清楚为什么你想用Pyramid做这个或者它是最好的解决方案。

Pyramid和大多数现代Python Web应用程序使用WSGI标准来解码和处理HTTP请求。下面我介绍一个适用于所有WSGI服务器的解决方案。这是一个略微修改的wsgi-proxy application。该示例的完整源代码和实现可用in pyramid_notebook。此实现仅允许代理到不同的public void update() { if(closeRequested) {destroy();} } public void destroy() { setVisible(false); dispose(); System.out.println("Window Destroyed."); } 端口,但可以更新它以允许任意内部网源IP。

您可以编写金字塔视图,捕获对特定路径的所有请求,例如localhost

/map-to-internal-server

然后你可以拥有WSGIProxyApplication,它可以连接上游服务器并将响应流式传输到客户端:

def proxy_it(request, port):
    """Proxy HTTP request to upstream server."""
    proxy_app = WSGIProxyApplication(port)
    return request.get_response(proxy_app)