提到反向代理,你会说用 nginx。没错,nginx 是理想的反向代理工具。
但现在条件苛刻,服务器没有 nginx,也没有 root 权限,意味着你无法编译安装 nginx,且只有一个端口 80 开放访问。怎么让这个 80 端口的某一请求转发到其他端口的 http 服务上?
换句话说,不用 nginx,如何让 http://localhost:80/new_req 的请求转发到 http://localhost:9999 的服务上,就像直接访问 http://localhost:9999 一样?
那么,这就需要我们自己实现反向代理的功能。
本文分享如何仅用 Django 实现反向代理。
1、安装轮子
pip install django-revproxy
这个轮子有对应的 whl 文件,非常容易安装成功,且不依赖其他轮子,如果是内网环境,pypi.org 上下载 whl 文件,复制进去 pip 安装一下就可以了。
2、配置
在 Django 的配置文件 settings.py 中的 INSTALLED_APPS 中,添加 ‘revproxy’。
#Add 'revproxy' to INSTALLED_APPS.
INSTALLED_APPS = (
# ...
'django.contrib.auth',
'revproxy',
# ...
)
然后编写一个视图类,比如
myproxy/views.py:
from revproxy.views import