用于 nginx 上游的 socks5 代理/隧道?

Posted

技术标签:

【中文标题】用于 nginx 上游的 socks5 代理/隧道?【英文标题】:socks5 proxy/tunnel for nginx upstream? 【发布时间】:2011-11-03 07:57:51 【问题描述】:

是否有任何解决方案/补丁可以使 nginx 与上游的袜子一起工作?

类似这样的:

server 
  location / 
    proxy_pass  socks5://ip:port/
  

【问题讨论】:

【参考方案1】:

我最近写了a module,完全符合您的需要。您可能需要在 nginx 之前使用 HAProxy 之类的东西来支持 TLS 隧道。

【讨论】:

【参考方案2】:

SOCKS 是第 5 层,HTTP 是第 7 层。HTTP 代理无法处理 SOCKS,尽管 HTTP 代理可以在 SOCKS 上工作。我不清楚如果 Nginx 能够连接到 SOCKS 服务器,你希望 Nginx 对响应做什么。这类似于询问 Nginx 是否可以连接到 NetBios 或 PTPP。

假设您尝试将 Nginx 代理连接到只能通过 SOCKS 访问的另一个 HTTP 服务器,您需要将其设置为操作系统上网络堆栈的一部分。

也许这个链接可以帮助你:

http://www.catonmat.net/blog/linux-socks5-proxy/

【讨论】:

是的,这就是我的意思,而不是设置另一个socks5代理(与nginx相比,它的性能保证很烂),为什么nginx不能直接处理socks5(客户端请求一个URL,nginx检索通过 socks5 的 URL。就这么简单)? 我不清楚您认为“the socks5”在您的描述中的什么位置。这是你必须在你的操作系统中配置的东西。完成此操作后,您只需告诉 Nginx 将 proxy_pass 传递给 localhost:8080(取决于您的 SOCKS 设置),它就会起作用。 localhost:8080 性能与 nginx 不匹配。您不能将此方法用于高带宽网站。 我不会在 SOCKS 上做一个高带宽站点。话虽如此,SOCKS 是一个网络接口,所以你必须把它当成一个。 期待这样的功能是完全有效的,您可以使用 nginx -> delegate -> sock5 轻松实现它。那么,为什么不能指望通过 nginx 插件来完成呢?

以上是关于用于 nginx 上游的 socks5 代理/隧道?的主要内容,如果未能解决你的问题,请参考以下文章

红蓝对抗之隧道技术第二篇(reGeorg内网穿透SSH隧道本地Socks代理SSH远程转发Earthworm Socks5代理Tunna正向代理ICMP隧道DNS隧道Frp穿透)

远程主机上的 Privoxy + socks5 隧道

http代理和SOCKS5代理的区别是啥

Nginx反向代理的工作方式

红蓝对抗之隧道技术第一篇(内网穿透端口映射&端口转发Netsh端口转发CS正反向连接多层内网Burp设置上游代理访问内网MSF protfwd端口转发/重定向)

在 C# 中设置 Internet Explorer / Windows 以使用 Socks5 代理