使用Lua编写代理/缓存服务器!

我仍然在学习Lua,并希望使用它编写一个(相对)简单的代理。

我想要达到的目标是:

1.监听端口。 2.接受连接。 3.因为这是一个代理,我期望在浏览器中收到HTTP(Get / Post等)/ HTTPS / FTP /任何请求。 4.检查请求(只是提取主机和端口信息吗?) 5.创建一个新的套接字并连接到请求中指定的主机。 6.将接收到的准确请求中继,包括POST数据和所有其他信息。 7.接收响应(标头/正文/任何其他内容..)并响应初始请求。 8.关闭连接?我想保持活动状态不应该受到尊重?

我意识到这不应该是轻松的,但是我使用LuaSockets或Copas设置它非常困难。我该如何接收整个请求?继续接收,直到扫描\r\n\r\n?然后如何提取POST数据?正文?还是接受“下载”文件?我读到了有关“源”的内容,但承认对此的大部分含义并不理解,所以也许我应该更多地学习这方面的知识呢?

如果要紧要的话,我正在使用LuaForWindows在Windows机器上工作,还是Lua的新手。到目前为止,我很喜欢它,表格实在是太棒了 :)

我发现lua-http,但似乎已经合并到Xavante中(我没有找到任何适用于lua 5.1和LuaForWindows的版本),我不确定它是否会让我的生活变得更轻松?

感谢提供任何提示、指针、应该查看的库/源等的提前答谢 :)

原文链接 https://stackoverflow.com/questions/4895942

点赞
stackoverflow用户36896
stackoverflow用户36896

将请求代理和服务器请求看作是不同的

并不像你所想的那么容易。在 rfc2616 中,你可以看到当查询代理时,客户端包括请求文档的绝对 URL 而不是通常的相对 URL。

因此,作为代理,您需要解析传入的请求,修改它们,查询适当的服务器,然后返回响应。

解析传入的请求非常复杂,因为正文长度取决于各种参数(方法、内容编码等)。

2011-02-04 08:46:00
stackoverflow用户6236
stackoverflow用户6236

你可以尝试使用 lua-http-parser

2011-02-04 09:25:03