• 中文交流区
  • 请教使用lua插件进行自己的远程桌面协议代理开发的问题

我们自己的远程桌面协议需要一个支持外网接入的网关代理,打算利用openresty来开发,它的代理过程很简单,客户端先跟proxy建立tcp连接,然后发送一个TCP包,告诉proxy它想要连接到的目的server的IP地址,然后proxy就把后续收到来自client的所有数据转发给这个server。这个proxy是否可以在openresty中利用lua插件机制来实现?还是建议直接在nginx中开发c语言插件?

    5 days later

    目前已经写了一个简单的代理脚本,在preread_by_lua_block中通过sock:receive接收到来自client的数据包,解析出其中携带的server ip,然后交给balancer_by_lua_block去执行set_current_peer,从而让client与最终的server成功建链。但是发现有个问题:client发给gateway首个数据报文之后,不能立刻继续写业务数据,因为gateway与backend还没有真正建立tcp链路,后续发送的client报文会被丢弃。所以我打算在gateway与server建链成功或者失败后给client一个应答,client收到该应答之后再继续发送tcp数据,但是这个应答在什么地方可以发送?在set_current_peer函数返回之后肯定不行,因为它只是指定一下upstream,并未真正发起建链操作。哪位知道这个问题怎么解决?

      10 days later

      首先,想法有问题,现在openresty只能针对传统像DNS一样应答式的编写,不能针对流。而且,为什么不用nginx的stream呢,你不过是做控制不就好了?

        Write a Reply...