• 请不要在回答技术问题时复制粘贴 AI 生成的内容
userlol
V2EX  ›  程序员

有没有转发 HTTP 请求的轮子?

  •  1
     
  •   userlol · Sep 4, 2017 · 5677 views
    This topic created in 3348 days ago, the information mentioned may be changed or developed.

    唯一要求:只要是监听 80 端口,接收 HTTP 请求,然后转发给相应目的主机。

    只要转发 HTTP 请求,HTTPS 支持都无所谓,也不需要向 FQ 工具那样 TCP 转发,希望是应用层转发就好,这样用起来也方便。
    举例:比如在 10.0.1.123 的 hosts 中指定了 10.0.1.110 www.test.com, 随后收到来自 10.0.1.123 的请求,该 proxy 将 GET /index.htm HTTP/1.1 ...请求转发至真正主机 123.113.110.134 ,并将回复 HTTP 302 Found 发回 10.0.1.123
    之自己写了个,单线程,效率低,有没有类似的轮子啊?谢谢各位

    Supplement 1  ·  Sep 4, 2017
    补充下,首先,需要跑在 CentOS CUI 下,其次 nginx 反代的确很厉害;还有,闭源的话希望提供改 http request/response 功能,开源的话希望最好是 http(s)代理,修改功能我就可以自己写了,最后,谢谢大家!
    31 replies  •  2017-09-05 16:56:48 +08:00
    msg7086
    msg7086
    Sep 4, 2017
    1
    为什么要回复 302 ?
    pathletboy
    pathletboy
    Sep 4, 2017
    2
    nginx?
    userlol
    userlol
    OP
    Sep 4, 2017
    3
    @msg7086 只是个例子,就是转发真正服务器原先的内容就可以,我改一下
    msg7086
    msg7086
    Sep 4, 2017
    4
    @userlol 只是转发的话 nginx 躺着就能做。
    novaeye
    novaeye
    Sep 4, 2017
    5
    各种反向代理工具都可以吧. 比如 haproxy, 比如 nginx, 又比如 caddy : https://caddyserver.com
    msg7086
    msg7086
    Sep 4, 2017
    6
    如果你用 Windows 的话,IIS 也应该可以做反代。
    tinytin
    tinytin
    Sep 4, 2017 via iPhone
    7
    nginx 最方便了
    userlol
    userlol
    OP
    Sep 4, 2017
    8
    @msg7086
    @novaeye
    @pathletboy
    先谢谢各位,之前我自己写的原因就是要修改 HTTP 请求里的内容(不是干坏事,自用),nginx 的话,这方面感觉太弱了。有开源轮子可以用吗?
    userlol
    userlol
    OP
    Sep 4, 2017
    9
    为什么 4 分钟就不能编辑了呢,也不能 append
    插一句,希望轮子能修改 http response,抱歉忘了提这个需求
    jobtesting
    jobtesting
    Sep 4, 2017
    10
    fiddler 不行?
    t1518968889
    t1518968889
    Sep 4, 2017 via Android
    11
    镜像?
    zlfzy
    zlfzy
    Sep 4, 2017 via iPhone
    12
    @userlol 日 PV 千万 nginx 都毫无压力,你说个人用感觉很弱
    msg7086
    msg7086
    Sep 4, 2017
    13
    @userlol 有多弱?你要改什么? nginx 里带着一套 lua 引擎你试过么……
    上面说的 fiddler 也是一个,能写脚本改请求的。

    只是改 response 的话 nginx 里有替换字符串的功能。

    无回复的时候可编辑,30 分钟还是多少分钟后可 append。
    tradzero
    tradzero
    Sep 4, 2017 via Android
    14
    nginx 反代太弱???
    hellove1985
    hellove1985
    Sep 4, 2017
    15
    mitmproxy ?
    fcka
    fcka
    Sep 4, 2017 via Android
    16
    openresty
    Immortal
    Immortal
    Sep 4, 2017
    17
    openresty+1
    msg7086
    msg7086
    Sep 4, 2017
    18
    你还是 nginx 吧,自己写模块也行,lua 脚本处理 response 也行。

    https 代理原生支持,当然你要获取 response 必须要先解密再改数据再重新加密。
    whileFalse
    whileFalse
    Sep 4, 2017
    19
    拿 go 裸写,50 行要不了
    nullcc
    nullcc
    Sep 4, 2017
    20
    openresty 可以有
    fuxkcsdn
    fuxkcsdn
    Sep 4, 2017 via iPhone
    21
    openresty+1
    zzzvvvxxxd
    zzzvvvxxxd
    Sep 4, 2017
    22
    openresty
    binux
    binux
    Sep 4, 2017
    23
    nginx 弱?我们公司在 nginx 上做的用户认证系统。。
    yidinghe
    yidinghe
    PRO
    Sep 4, 2017 via Android
    24
    https://github.com/openresty/lua-nginx-module/blob/master/README.markdown

    楼主看看这个能不能满足要求,用 lua 编写处理逻辑。
    zhongshu
    zhongshu
    Sep 4, 2017
    25
    java,我用 jetty 写过一个根据 url 代理到不同地址,或本地路径的工具,jetty 干这个还挺好用的。
    mengskysama
    mengskysama
    Sep 4, 2017
    26
    openresty 2 行搞定了吧....
    local res = ngx.location.capture(ngx.var.scheme .. "://" .. ngx.var.host .. ngx.var.uri)
    res.say("body:" .. res.body)
    pagxir
    pagxir
    Sep 4, 2017
    27
    找个开源的 CDN 项目改改,基本满足你需求的了。比如 openCDN
    togodo
    togodo
    Sep 5, 2017
    28
    这不就是代理服务器吗
    displayabc
    displayabc
    Sep 5, 2017
    29
    好像 nginx 新版本增加了 http 镜像功能
    hdczsf
    hdczsf
    Sep 5, 2017
    30
    不用 nginx 的话,那可以尝试一下 kangle
    https://www.kanglesoft.com/article-10-1.html
    micean
    micean
    Sep 5, 2017
    31
    vertx
    代理只有几行代码
    http 或 s 都可以
    性能的话自己测试
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2980 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 12:07 · PVG 20:07 · LAX 04:07 · JFK 07:07
    ♥ Do have faith in what you're doing.