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

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

  •  1
     
  •   userlol · Sep 4, 2017 · 5278 views
    This topic created in 3198 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
        1
    msg7086  
       Sep 4, 2017
    为什么要回复 302 ?
    pathletboy
        2
    pathletboy  
       Sep 4, 2017
    nginx?
    userlol
        3
    userlol  
    OP
       Sep 4, 2017
    @msg7086 只是个例子,就是转发真正服务器原先的内容就可以,我改一下
    msg7086
        4
    msg7086  
       Sep 4, 2017
    @userlol 只是转发的话 nginx 躺着就能做。
    novaeye
        5
    novaeye  
       Sep 4, 2017
    各种反向代理工具都可以吧. 比如 haproxy, 比如 nginx, 又比如 caddy : https://caddyserver.com
    msg7086
        6
    msg7086  
       Sep 4, 2017
    如果你用 Windows 的话,IIS 也应该可以做反代。
    tinytin
        7
    tinytin  
       Sep 4, 2017 via iPhone
    nginx 最方便了
    userlol
        8
    userlol  
    OP
       Sep 4, 2017
    @msg7086
    @novaeye
    @pathletboy
    先谢谢各位,之前我自己写的原因就是要修改 HTTP 请求里的内容(不是干坏事,自用),nginx 的话,这方面感觉太弱了。有开源轮子可以用吗?
    userlol
        9
    userlol  
    OP
       Sep 4, 2017
    为什么 4 分钟就不能编辑了呢,也不能 append
    插一句,希望轮子能修改 http response,抱歉忘了提这个需求
    jobtesting
        10
    jobtesting  
       Sep 4, 2017
    fiddler 不行?
    t1518968889
        11
    t1518968889  
       Sep 4, 2017 via Android
    镜像?
    zlfzy
        12
    zlfzy  
       Sep 4, 2017 via iPhone
    @userlol 日 PV 千万 nginx 都毫无压力,你说个人用感觉很弱
    msg7086
        13
    msg7086  
       Sep 4, 2017
    @userlol 有多弱?你要改什么? nginx 里带着一套 lua 引擎你试过么……
    上面说的 fiddler 也是一个,能写脚本改请求的。

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

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

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

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