WSGIProxy 是一个 python 包,  属于 paster  的一个组件, 提供了代理功能。可以在一些情况下代替mod_proxy.

比如你在本地6543端口运行一个Python Web 服务器, 而你的服务器只开放了80端口,并且运行着apache , 你可以使用mod_proxy 来把请求转发过去,  或者你也可以使用 mod_rewrite + fcgi + 下面的脚本实现同样的功能.

proxy.fcgi

#!/home/filia/env/bin/python
import sys
import os
 
script_name = '/' + os.path.basename(__file__)
os.environ['PYTHON_EGG_CACHE'] = "/home/filia/tmp/.egg_cache/"
 
import wsgiproxy.exactproxy
from fcgi import WSGIServer
 
DEST_SERVER = "127.0.0.1"
DEST_PORT = 6543
 
def reverse_proxy(environ, start_response):
    environ['SERVER_NAME'] = DEST_SERVER
    environ['SERVER_PORT'] = DEST_PORT
    if environ.has_key('SCRIPT_NAME') and environ['SCRIPT_NAME'].endswith(script_name):
        environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-len(script_name)]
    return wsgiproxy.exactproxy.proxy_exact_request(environ, start_response)
 
WSGIServer(reverse_proxy).run()

当然你还需要一个 fcgi.py 模块, 比如这个 http://svn.saddi.com/py-lib/trunk/fcgi.py .
还有一个.htacces 文件定义rewrite.

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteBase /
RewriteRule ^(proxy\.fcgi/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ proxy.fcgi/$1 [L]

我没有测试这样的方式的性能, 估计不会好到哪里去。 不过我的应用是一个管理后台, 性能就不是一个重要的问题了.