假设我有 URL=www.mysite.com/20000/
我想获得一个代理,然后可以将流量引导到 www.mysite.com:20000。问题是我不知道 URL/端口会是什么。所以我无法在代理配置中将 URL /20000/ 静态匹配到端口 20000。是否有一个程序可以用来将 URL 中的正则表达式保存到变量中,并将其设置为我想要代理的端口?或者这是不可能的。对于上下文,这是一个用于查看随机端口上传入的 SSH 连接的前端。谢谢
答案1
警告:
下面的解决方案可能是一个重大的安全问题,因为您允许最终用户指定访问后端服务器的端口,从而打开了允许访问外部不可见端口的大门。
必须采取某种机制来阻止不必要的端口 - 这也可以以类似的方式完成,mod_rewrite
让任何你想要的东西通过,并阻止你不想要的东西。
这可以使用 Apache httpd 和代理来完成mod_rewrite
,指令如下:
RewriteEngine on
RewriteRule ^/?([0-9]*)/(.*) http://www.example.com:$1/$2 [L,P]
您需要启用mod_rewrite
和mod_proxy
。有关 的完整文档mod_rewrite
,您可以查阅:
话虽如此,实际上最好将其设置为代理密码匹配...
ProxyPassMatch "^/?([0-9]*)/(.*)" "http://backend.example.com:$1/$2"