V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
userlol
V2EX  ›  程序员

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

  •  1
     
  •   userlol · 2017-09-04 13:06:27 +08:00 · 4414 次点击
    这是一个创建于 2629 天前的主题,其中的信息可能已经有所发展或是发生改变。

    唯一要求:只要是监听 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
    之自己写了个,单线程,效率低,有没有类似的轮子啊?谢谢各位

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

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

    无回复的时候可编辑,30 分钟还是多少分钟后可 append。
    tradzero
        14
    tradzero  
       2017-09-04 13:27:55 +08:00 via Android
    nginx 反代太弱???
    hellove1985
        15
    hellove1985  
       2017-09-04 13:35:29 +08:00
    mitmproxy ?
    fcka
        16
    fcka  
       2017-09-04 13:38:06 +08:00 via Android
    openresty
    Immortal
        17
    Immortal  
       2017-09-04 13:43:20 +08:00
    openresty+1
    msg7086
        18
    msg7086  
       2017-09-04 14:40:01 +08:00
    你还是 nginx 吧,自己写模块也行,lua 脚本处理 response 也行。

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

    楼主看看这个能不能满足要求,用 lua 编写处理逻辑。
    zhongshu
        25
    zhongshu  
       2017-09-04 21:46:03 +08:00
    java,我用 jetty 写过一个根据 url 代理到不同地址,或本地路径的工具,jetty 干这个还挺好用的。
    mengskysama
        26
    mengskysama  
       2017-09-04 21:56:10 +08:00
    openresty 2 行搞定了吧....
    local res = ngx.location.capture(ngx.var.scheme .. "://" .. ngx.var.host .. ngx.var.uri)
    res.say("body:" .. res.body)
    pagxir
        27
    pagxir  
       2017-09-04 23:15:09 +08:00
    找个开源的 CDN 项目改改,基本满足你需求的了。比如 openCDN
    togodo
        28
    togodo  
       2017-09-05 07:09:03 +08:00
    这不就是代理服务器吗
    haython
        29
    haython  
       2017-09-05 09:48:35 +08:00
    好像 nginx 新版本增加了 http 镜像功能
    hdczsf
        30
    hdczsf  
       2017-09-05 10:31:09 +08:00
    不用 nginx 的话,那可以尝试一下 kangle
    https://www.kanglesoft.com/article-10-1.html
    micean
        31
    micean  
       2017-09-05 16:56:48 +08:00
    vertx
    代理只有几行代码
    http 或 s 都可以
    性能的话自己测试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2793 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:05 · PVG 20:05 · LAX 04:05 · JFK 07:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.