如何使Nginx反向代理直接到Tor隐藏服务?

时间:2019-04-03 04:53:05

标签: nginx service proxy hidden tor

是否可以通过Tor隐藏服务建立Clearnet网站隧道? 例如,某人拥有blah.com,它指向服务器IP 1.2.3.4,但希望1.2.3.4向隐藏的服务发出代理请求。

关键是要有一个clearnet“查找”网站,同时将网站本身的内容放在隐藏的服务器上,基本上是proxy_pass要做的,除了它需要连接到本地主机。

有什么想法/如何做到的?

3 个答案:

答案 0 :(得分:1)

糟糕,我参加聚会有点晚了。几天前我想做完全相同的事情,但找不到解决问题的可行方法。因此,经过几天的研究和一些开发,我想出了 tor-nginx-proxy - 一个帮助我们实现这一目标的 docker 镜像。

阅读更多相关信息 - https://harshitbudhraja.com/port-a-website-to-the-dark-web-in-under-2-minutes

答案 1 :(得分:0)

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

假设您已在服务器上配置了Tor(不是 tor浏览器),则只需使用requests(或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作为代理运行,则应阅读此here

在linux上:

  • 安装:apt install tor
  • 开始:tor

在Mac上:

  • 安装:brew install tor(需要homebrew
  • 开始:tor

在Windows上:

  • 您是SOL xD。

我不知道如何在nginx服务器上配置tor代理,但这将是一个很好的后续问题。

答案 2 :(得分:0)

是的。这是可能的。 proxy_pass 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_ONION 和 $PORT_ONION