python通过cgi反向代理生成

标签 python

我需要编写一个 cgi 页面,它将充当用户和另一个页面(mbean)之间的反向代理。问题是每个 mbean 使用不同的端口,我不提前知道用户想要访问哪个端口。
因此我需要做的事情如下: A)为用户提供一个页面,允许他选择他想要访问的应用程序 B)根据上面的信息生成一个反向代理(这给了我端口、服务器等......) C) 用户通过反向代理连接到远程 mbean 页面,因此永远不会“离开”原始页面。
选择 C ​​的原因是用户无法直接访问任何内部应用程序,只能访问初始端口 80。

我查看了twisted,在我看来它可以完成这项工作。我不知道的是如何从 cgi 中生成扭曲的进程,以便它可以建立连接并在反向代理框架内保持进一步的连接。

顺便说一句,我还没有嫁给twisted,如果有其他工具可以更好地完成这项工作,我洗耳恭听。我不能做 mod_proxy 之类的事情(例如),因为广泛的端口会使配置变得相当愚蠢(大约 1000 个不同的代理设置)。

最佳答案

您不需要生成另一个进程,这会使事情变得更加复杂。根据我当前项目中的类似内容,我将如何做到这一点:

  • 创建一个 WSGI 应用程序,该应用程序可以驻留在网络服务器后面。
  • 创建一个请求处理程序(或“ View ”),只要用户没有 session ID Cookie,就可以从任何 URL 映射访问该请求处理程序。
  • 在请求处理程序中,用户可以选择目标应用程序及其主机名、端口号等。此请求处理程序创建与目标应用程序的连接,例如使用 httplib 并为其分配 session ID。它设置 session ID cookie 并将用户重定向回同一页面。
  • 现在,当您的用户点击应用程序时,您可以使用已打开的 http 连接来重定向查询。请注意,WSGI 支持传回打开的类似文件的对象作为响应,包括 httplib 提供的对象,以提高性能。

关于python通过cgi反向代理生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6488806/

相关文章:

python - 在哪里为 Django 项目设置 Python 环境属性?

python - 如何在Python中递归地排列列表中的n个元素?

Python/Django 2.0/Bootstrap3 : Retrieving data from db based on form inputs using Django

python - 为什么我需要洗牌我的 PCollection 才能在 Cloud Dataflow 上自动缩放?

python - 在 python 中创建连续分布

python - ARINC429 构词法

python - boto3 s3 api 失败, "(NoSuchBucketPolicy) when calling the GetBucketPolicyStatus operation"

python - 将具有多个子选项的命令行选项传递给 python 脚本 -- shell 脚本

python - 合并 Pandas Dataframes - 保留原始顺序并覆盖列

python - numpy:为什么数组乘法是可交换的?