Rosmontis&迷迭香的博客&鹤望兰分部

Rosmontis&迷迭香的博客
僅用於Bing訪客使用,若需要最新的文章,建議訪問rosmontis.com
  1. 首页
  2. 正文

不用Nginx,如何使用 Django 实现反向代理?

2022年5月6日 5点热度 0人点赞 0条评论

提到反向代理,你会说用 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 ProxyView

class TestProxyView(ProxyView):
    upstream = "http://localhost:9999" ##http://example.com

然后修改 Django 的 urls.py 文件,添加这样一条路由:

from myproxy.views import TestProxyView
from django.conf.urls import url

urls = [
   # ...
   url(r'^new_req/(?P<path>.*)$', TestProxyView.as_view()),
   # ...
]

或者,你不想新建一个 views.py 文件,可以直接在 url.py 中这样写:

from django.urls import re_path

from revproxy.views import ProxyView

urlpatterns = [
    re_path(r'(?P<path>.*)', ProxyView.as_view(upstream='http://example.com/')),
]

最后,将 Django 服务部署在 80 端口上,然后访问:

http://localhost/new_req

就相当于访问

http://localhost:9999

3、它是如何工作的

这个图就是 django-revproxy 所做的事情:

1、Django 接收来自客户端的请求,并使用 revproxy.proxy.ProxyView 对其进行处理。

2、Revproxy 将克隆客户端请求。

3、如果用户在 Django 中通过身份验证,并且 add_remote_user 属性设置为 True,则 HTTP 标头 REMOTE_USER 将设置为request.user.username。

class CustomProxyView(ProxyView):
    upstream = 'http://www.example.com'
    add_remote_user = True
    

4、如果 add_x_forwarded 属性设置为 True,则 HTTP 标头 X-Forwarded-For 和 X-Forwarded-Proto 将分别设置为请求者的 IP 地址和协议(http 或 https)。

5、克隆的请求被发送到上游服务器,也就是 upstream。

6、在收到来自上游的响应后,视图将对其进行处理以确保正确设置所有 headers。一些 headers 像 Location 这样的被视为特殊情况。

7、从上游服务器接收到的响应被转换为 django.http.HttpResponse。对于二进制文件,使用 StreamingHttpResponse 来减少内存使用。

8、如果用户设置了一组 diazo 规则和一个主题模板,则会在响应正文上应用 diazo/XSLT 转换。

views.py :

from django.urls import re_path

from revproxy.views import DiazoProxyView

proxy_view = DiazoProxyView.as_view(
    upstream='http://example.com/',
    html5=True,
    diazo_theme_template='base.html',
)

urlpatterns = [
    re_path(r'(?P<path>.*)', proxy_view),
]
    

base.html :

<html>
    <head>...</head>
    <body>
        ...
        <div id="content"></div>
        ...Fix all links in the docs (and README file etc) from old to new repo

9、最后,响应将返回给用户。

最后的话

分享文件,我比较常用的方式是在某一目录下执行一条 Python 命令: python -m http.server ,可以让该目录下的文件或文件夹通过 http 的方式共享给他人下载使用,使用 django-revproxy 这个轮子,可以让这个功能集成在 Django 的某一个路由中,在开发者服务器部署,大家用起来是着实方便。这也是为什么我找到了这个轮子。

标签: 暂无
最后更新:2022年6月8日

Rosmontis

这个人很懒,什么都没留下

点赞

文章评论

取消回复

Rosmontis

这个人很懒,什么都没留下

本站文章约1个月与rosmontis.com同步一次

最新 热点 随机
最新 热点 随机
【拉环社】【Onedrive】仰望夜空的星辰Fine Days/抬头看看吧,看那天上的繁星Fine Days(FD)完整汉化+全CG(4.9GB) 【拉环社】【Onedrive】仰望夜空的星辰IF/抬头看看吧,看那天上的繁星IF -Interstellar Focus-(FD)完整汉化+全CG(2.8GB) 【漩涡社】鲸神的提亚斯提拉/鲸神的Tearstilla 鯨神のティアスティラ 完整汉化+全CG(3.2GB) 【拉环社】【Onedrive】仰望夜空的星辰/抬头看看吧,看那天上的繁星(本作) 见上げてごらん、夜空の星を 完整汉化+全CG(6.5GB) 【SAGA PLANETS】【Onedrive】FD:金色loveriche-金色时光- 金色ラブリッチェ -Golden Time- 完整汉化+全CG(5.5GB) 【SAGA PLANETS】【Onedrive】金辉恋曲四重奏/金色Loveriche 金色ラブリッチェ 完整汉化+全CG(5.6GB) 【Onedrive】娇蛮任性HIGHSPEC ワガママハイスペック 完整汉化(7.2GB) 【Alcot】【Onedrive】FD:将军大人芳华正茂 Fandisc 将軍様はお年頃 ふぁんでぃすく -御三家だヨ!全員集合- 完整汉化+全CG(3.0GB) 【Alcot】【Onedrive】将军大人芳华正茂/将军大人风华正茂 将军様はお年顷 完整汉化+全CG(4.20GB) 国产动画《京剧猫》,被运营耽搁的好动画,哀其不幸怒其不争! 【Onedrive】架向星空之桥AA 架向星空之桥FAN DISC 星空へ架かる桥AA 完整汉化(3.6GB) 【Onedrive】架向星空之桥 星空へ架かる桥 完整汉化(4.3GB) 【颜艺社】【Onedrive】寄宿之恋 かりぐらし恋爱 完整汉化+全CG(2.7GB) 【八月社】【Onedrive】秽翼的尤斯蒂娅 秽翼のユースティア 完整汉化(4.7GB) 【橘子社妈妈累】【Onedrive】回家之前的棉花糖 お家に帰るまでがましまろです 完整汉化+全CG(5.8GB) 【SAGA PLANETS】【Onedrive】花之天使的夏日恋歌 フローラル・フローラブ 完整汉化+全CG(3.7GB) 【音符社】【Onedrive】花与乙女的祝福+花与乙女的祝福 皇家花束 完整汉化(共3.9GB) 【2022.06更新】【Onedrive】最全!花吻在上/亲吻那片花瓣 その花びらにくちづけを 1~20本作+3番外共23作 完整汉化(约10.5GB) 【Onedrive】花色温泉乡/花色七芒星 花色ヘプタグラム 完整汉化(3.6GB) 【CRYSTALIA】红月摇曳的恋之星火SS 与旭同往~来自盛夏的某日~ 旭とワンルーム ~とある夏の一日~ 完整汉化+全CG (550MB) 【CRYSTALIA】红月摇曳的恋之星火SS 与红叶同住 ~来自盛夏的某日~ 紅葉とワンルーム ~とある夏の一日~ 完整汉化+全CG (580MB) 【CRYSTALIA】红月摇曳的恋之星火 紅月ゆれる恋あかり 完整汉化+全CG (2.5GB) 【Onedrive】FD:景之海的艾佩莉亚 ~卡萨布兰卡的骑士~ 景の海のアペイリア ~カサブランカの騎士~ 完整汉化+全CG(2.3GB) 【Onedrive】景之海的艾佩莉娅/海景的艾佩利雅 景の海のアペイリア 完整汉化+全CG(3.0GB) 【柚子社】【Onedrive】管乐恋曲!~The bonds of melody~ ぶらばん! ~The bonds of melody~ 完整汉化(3.0GB) 【Onedrive】【妹抱FD】哥哥,早上起床之前都要抱紧我哦!晚上睡觉之前学更多Java吧!完整汉化+全CG(4.4GB) 【Onedrive】哥哥,早上起床之前都要抱紧我哦!(妹抱)お兄ちゃん、朝までずっとギュってして!完整汉化+全CG(7.0GB) 【SLG】夏日狂想曲:乡间的难忘回忆 【拉环社】【Onedrive】在这苍穹展翅/在这苍穹之中展开双翼 この大空に、翼をひろげてIf My Heart Had Wings 完整汉化(4.3GB) 【拉环社】【Onedrive】在这苍穹展翅-飞行日志- If My Heart Had Wings -Flight Diary- この大空に、翼をひろげて FLIGHT DIARY 完整汉化(3.0GB)
【SLG】夏日狂想曲:乡间的难忘回忆【海豹社】【Onedrive】爱之钥系列 爱之钥田园夏日 アイカギ~アフターデイズ~ 完整汉化+全CG(1.4GB)【拉环社】【Onedrive】仰望夜空的星辰Fine Days/抬头看看吧,看那天上的繁星Fine Days(FD)完整汉化+全CG(4.9GB)【CRYSTALIA】红月摇曳的恋之星火 紅月ゆれる恋あかり 完整汉化+全CG (2.5GB)【柚子社】【Onedrive】管乐恋曲!~The bonds of melody~ ぶらばん! ~The bonds of melody~ 完整汉化(3.0GB)【Onedrive】哥哥,早上起床之前都要抱紧我哦!(妹抱)お兄ちゃん、朝までずっとギュってして!完整汉化+全CG(7.0GB)【Onedrive】景之海的艾佩莉娅/海景的艾佩利雅 景の海のアペイリア 完整汉化+全CG(3.0GB)【Onedrive】FD:景之海的艾佩莉亚 ~卡萨布兰卡的骑士~ 景の海のアペイリア ~カサブランカの騎士~ 完整汉化+全CG(2.3GB)【CRYSTALIA】红月摇曳的恋之星火SS 与红叶同住 ~来自盛夏的某日~ 紅葉とワンルーム ~とある夏の一日~ 完整汉化+全CG (580MB)【CRYSTALIA】红月摇曳的恋之星火SS 与旭同往~来自盛夏的某日~ 旭とワンルーム ~とある夏の一日~ 完整汉化+全CG (550MB)【Onedrive】花色温泉乡/花色七芒星 花色ヘプタグラム 完整汉化(3.6GB)【2022.06更新】【Onedrive】最全!花吻在上/亲吻那片花瓣 その花びらにくちづけを 1~20本作+3番外共23作 完整汉化(约10.5GB)【音符社】【Onedrive】花与乙女的祝福+花与乙女的祝福 皇家花束 完整汉化(共3.9GB)【SAGA PLANETS】【Onedrive】花之天使的夏日恋歌 フローラル・フローラブ 完整汉化+全CG(3.7GB)【橘子社妈妈累】【Onedrive】回家之前的棉花糖 お家に帰るまでがましまろです 完整汉化+全CG(5.8GB)【八月社】【Onedrive】秽翼的尤斯蒂娅 秽翼のユースティア 完整汉化(4.7GB)【颜艺社】【Onedrive】寄宿之恋 かりぐらし恋爱 完整汉化+全CG(2.7GB)【Onedrive】架向星空之桥 星空へ架かる桥 完整汉化(4.3GB)【Onedrive】架向星空之桥AA 架向星空之桥FAN DISC 星空へ架かる桥AA 完整汉化(3.6GB)国产动画《京剧猫》,被运营耽搁的好动画,哀其不幸怒其不争!【Alcot】【Onedrive】将军大人芳华正茂/将军大人风华正茂 将军様はお年顷 完整汉化+全CG(4.20GB)【Alcot】【Onedrive】FD:将军大人芳华正茂 Fandisc 将軍様はお年頃 ふぁんでぃすく -御三家だヨ!全員集合- 完整汉化+全CG(3.0GB)【Onedrive】娇蛮任性HIGHSPEC ワガママハイスペック 完整汉化(7.2GB)【SAGA PLANETS】【Onedrive】金辉恋曲四重奏/金色Loveriche 金色ラブリッチェ 完整汉化+全CG(5.6GB)【SAGA PLANETS】【Onedrive】FD:金色loveriche-金色时光- 金色ラブリッチェ -Golden Time- 完整汉化+全CG(5.5GB)【拉环社】【Onedrive】仰望夜空的星辰/抬头看看吧,看那天上的繁星(本作) 见上げてごらん、夜空の星を 完整汉化+全CG(6.5GB)【漩涡社】鲸神的提亚斯提拉/鲸神的Tearstilla 鯨神のティアスティラ 完整汉化+全CG(3.2GB)【拉环社】【Onedrive】仰望夜空的星辰IF/抬头看看吧,看那天上的繁星IF -Interstellar Focus-(FD)完整汉化+全CG(2.8GB)【雪碧社Sprite】【Onedrive】苍之彼方的四重奏EXTRA2 DL Edition 蒼の彼方のフォーリズム EXTRA2 生肉+全CG(3.5GB)【Onedrive】爱因斯坦携爱敬上APOLLOCRISIS アインシュタインより愛を込めて APOLLOCRISIS 汉化本体+全CG(2.3GB)
【Escu:de生肉】【Onedrive】姫と婬欲のテスタメント 4月28日新作!(3.2 GB) HTML 怎么样让文字竖着显示 【音符社】【Onedrive】樱舞少女的轮舞曲~我想成为你的恋人~ (320MB) 这样也许能更直观地理解HTTPS为什么安全 世界,您好! 【鬼畜病毒评测】Π病毒(圆周率病毒) 使用虚拟信用卡VISA外币卡白嫖AWS一年免费云服务器 【百度云】甜蜜恶魔!Honey&Devil完整全线汉化硬盘版+全CG存档(4.2G) 在html中插入音频文件在浏览器中播放音频文件的兼容性问题 wget提示 要以不安全的方式连接至 domain.com,使用‘--no-check-certificate’ 解决 【拉环社PULLTOP】【Onedrive】白熊铃星群 しろくまベルスターズ♪ 未来数位繁体中文代理版(4.3GB) 有用的 CMD 指令 【YUZUSOFT】【百度云】Parquet 完整汉化+全cg存档【2G】 【CRYSTALIA】红月摇曳的恋之星火 紅月ゆれる恋あかり 完整汉化+全CG (2.5GB) 【Onedrive】架向星空之桥AA 架向星空之桥FAN DISC 星空へ架かる桥AA 完整汉化(3.6GB) 如何给网页中的图片自动添加水印 详解XHTML中的标题标签与段落标签的使用 【Onedrive】映入红瞳的世界 红い瞳に映るセカイ 汉化完整版 (2.8 GB) 栞那 【漩涡社】【Onedrive】NEKO-NIN exHeart 1+PLUS Nachi 猫忍之心1奈知篇 汉化+全CG(0.8G) Zabbix安装时数据库连接失败/监控端日志报错:Access denied for user 'zabbix'@'localhost' (using password: YES) 隐藏服务器真实IP,禁止直接通过IP访问网站,防止SSL证书泄露源站 Zabbix被监控端日志报错:no active checks on server [XXXXX]: host [XXXXX] not found 【漩涡社】【Onedrive】NEKO-NIN exHeart 2 Love PLUS 猫忍之心2续作 English Version英文版(1.1G) Zabbix4.0安装后PHP报错:Array and string offset access syntax with curly braces is deprecated [zabbix.php:21 → 【YUZUSOFT】【Onedrive】夏空彼方-夏空カナタ【1.7G】 【勒索病毒评测】petya病毒+视频 【颜艺社】【Onedrive】寄宿之恋 かりぐらし恋爱 完整汉化+全CG(2.7GB) linux firewalld 防火墙命令 【拉环社】【Onedrive】仰望夜空的星辰IF/抬头看看吧,看那天上的繁星IF -Interstellar Focus-(FD)完整汉化+全CG(2.8GB)

COPYRIGHT © 2022 Rosmontis&迷迭香的博客&鹤望兰分部. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang