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

如何通过 openresty lua 代理发送 tcp 请求

  •  
  •   ysz1121 · Oct 14, 2016 · 3661 views
    This topic created in 3505 days ago, the information mentioned may be changed or developed.

    如何通过 openresty lua 代理发送 tcp 请求

    如题目: 正常咱们使用 socket:tcp 创建请示 然后 connect(host, port)

    普通连接代码如下:

    -- check.lua
    
    local portHandler = function(premature, ip_address, port)
        local sock = ngx.socket.tcp()
        sock:settimeout(300)
        local ok, err = sock:connect(ip_address, port)
    
        if ok then
            --        数据库处理或文件处理写入历史
            local ok, err = ngx.timer.at(1, handler, ip_address, port);
            if not ok then
                ngx.log(ngx.ERR, "failed to create timer: ", err)
            end
        else
            ngx.log(ngx.ERR, "port_handler_error: " .. ip_address, err)
        end
        sock:close()
    end
    

    以上方法在没有任何限制的情况下是可以使用的。

    当如果内网有限制,比如需要访问外网就必须得使用代理的时候,此时运维给了一个可用的代理 ip 、端口及用户名密码,运维称使用的是 ss5 。那么现在我要如何通过他给的代理把 tcp 请求发出去?

    4 replies    2016-10-17 10:55:20 +08:00
    ysz1121
        2
    ysz1121  
    OP
       Oct 14, 2016
    @jigloo 有具体实例吗?感觉那个还是没到点上。我要怎么通过代理发送 tcp 请求?
    mengskysama
        3
    mengskysama  
       Oct 15, 2016
    楼上那个封装成了 http ,连接函数是 ATYP=3 类型的,你得稍微改改。 socks5 协议很简单,可以参照 rfc1928 改几行。还有就是这种功能为啥不用 kafka 至少也是 redis
    ysz1121
        4
    ysz1121  
    OP
       Oct 17, 2016
    @mengskysama 唉…… 现在运维限制的特别严,啥都不能干。有具体实例吗?着急用呢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1037 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 19:02 · PVG 03:02 · LAX 12:02 · JFK 15:02
    ♥ Do have faith in what you're doing.