如何使nginx反向代理直接指向tor隐藏服务?

如何使nginx反向代理直接指向tor隐藏服务?,nginx,service,proxy,hidden,tor,Nginx,Service,Proxy,Hidden,Tor,有可能通过tor隐藏服务建立一个clearnet网站隧道吗? 例如,如果有人拥有blah.com,它指向服务器IP 1.2.3.4,但希望1.2.3.4向隐藏服务发出代理请求 关键是要有一个clearnet“外观”网站,同时将网站本身的内容放在一个隐藏的服务器上,这基本上是proxy_pass所能做的,除非它需要连接到localhost 有没有办法做到这一点?您没有指定后端语言,因此我将向您展示一个使用python Django的示例 假设您在服务器上配置了tor(而不是tor浏览器),您只需使

有可能通过tor隐藏服务建立一个clearnet网站隧道吗? 例如,如果有人拥有blah.com,它指向服务器IP 1.2.3.4,但希望1.2.3.4向隐藏服务发出代理请求

关键是要有一个clearnet“外观”网站,同时将网站本身的内容放在一个隐藏的服务器上,这基本上是proxy_pass所能做的,除非它需要连接到localhost


有没有办法做到这一点?

您没有指定后端语言,因此我将向您展示一个使用python Django的示例

假设您在服务器上配置了tor(而不是tor浏览器),您只需使用
请求
(或aiohttp、urllib2等)发出GET请求,然后将响应转发给您的客户端:

from django.shortcuts import render
import requests

def someView(req):
    url = 'someWebsite.onion'
    proxy = {
        'http':'socks5h://localhost:9050',
        'https':'socks5h://localhost:9050'
    }
    html = requests.get(url, proxy=proxy)
    context = {'html':html}
    return render(req, 'someTemplate.html', context)  
然后在
someTemplate.html
上:

{{ html }}
可能有更优雅的方式将html数据传输到客户端,但这在很大程度上取决于您使用的后端

如果您不熟悉在本地计算机上运行tor作为代理,您应该仔细阅读这篇文章

在linux上:

  • 安装:
    apt安装tor
  • 开始:
    tor
在mac上:

  • 安装:
    brew安装tor
    (需要)
  • 开始:
    tor
在Windows上:

  • 你是索尔xD
我不知道如何在nginx服务器上配置tor代理,但您可以问一个很好的后续问题。

是的。这是可能的。 代理\将nginx传递给socat,并将该代理传递给tor

/usr/bin/socat tcp4-LISTEN:$PORT,reuseaddr,fork,keepalive,bind=$IP SOCKS4A:127.0.0.1:$URL_ONION:$PORT_ONION,socksport=9050

用你的数据替换$PORT、$IP、$URL\u洋葱和$PORT\u洋葱

哎呀,我来派对有点晚了。几天前,我想做同样的事情,但找不到一个可行的解决方案。因此,经过几天的研究和开发,我想出了
tor nginx proxy
——一个docker图像,帮助我们实现这一目标


阅读更多相关信息-

您自己有没有尝试过?通常情况下,这样广泛的问题会被删除,但是你的问题似乎是一个很好的例外+1我曾经尝试过的一件事是使用tor2web,通过将blah.com proxy_传递给tor2web proxy,但这带来了证书问题,同时也是使用tor2web本身的安全问题。我认为nginx必须进行修改,以允许proxy_pass首先通过一个代理才能工作感谢响应,但在这种情况下,我必须抛弃nginx,从头开始重建web服务器。。也许还有另一种方法,比如在nginx源代码中添加socks5对proxy_pass的支持