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