我不知道我是否以正确的方式处理此事,但这是我需要做的。我有一个可在互联网上访问的网站。但我有一些用户只能访问内联网。我想创建一个代理以允许这些用户访问这个网站。我现在设置的是一个 Nginx,它会在 aproxy.com 上监听 bproxy 并将用户转发到任何参数。
我还设置了防火墙,只允许访问 IP 地址 127.0.0.1。
我使用 proxy_pass http://$args 将用户重定向到 www.aproxy.com/bproxy?www.somesite.com 中的参数。现在,如果参数是 www.google.com,它会将用户重定向到 www.google.com/bproxy?www.somesite.com。这显然会引发错误,因为 bproxy 不是 somesite 上的路径。我希望浏览器继续显示http://aproxy.com/bproxy?www.somesite.com,但用户看到的是 www.google.com。
如果我直接使用,则不会发生这种情况http://aproxy.com/?www.somesite.com。现在我面临的问题是 www.somesite.com 中的任何相对路径(如 /img/imagei.gif)都会变成 aproxy.com/img/image1.gif,而不是 www.somesite.com/img/image1.gif。
我不知道该如何进行,非常希望得到一些帮助。
答案1
有一件事你还没有想到——即使你可以访问 proxy.local/somesite.com,所有链接仍将指向 somesite.com。Apache 有一个模块可以解决这个问题(我从未使用过),但是 NGinx 没有。你应该试试 Squid,你可以设置 ACL 来限制哪些网站可以访问,而且几乎所有东西都支持它。同样,有一个非常古老的 perl 脚本,称为 nph-proxy.cgi,它运行得相当好。