我正在寻找一种解决方案,该解决方案将面向外部的http://mycompany.com/external/*
重定向/代理重定向到http://internal-host:1234/internal/*
(星号用作通配符)
好的,我猜上面那句话还不够,所以这里是细节:
在我的 Intranet 中,我有几台服务器(为简单起见,名称、地址、端口和上下文路径显然是虚构的):
- HRServer 在地址运行
10.10.10.10:1010/hr
- 邮件服务器在地址运行
20.20.20.20:2020/mail
我的系统只能从 ip 78.78.78.78 访问互联网,这里的限制是我只能使用一个端口(例如 8080)。换句话说 - 无论我的问题的解决方案是什么 - 外部地址都应该以78.78.78.78:8080
我需要做的是通过这个端口公开 HR 和 Mail 服务。我想到的第一件事是编写两个简单的 portlet(或带有两个框架的 HTML)并将它们嵌入到 78.78.78.78:8080/ 的简单网页中,但显然这不起作用,因为 portlet 将重定向浏览器到例如 10.10.10.10:1010/hr,这在互联网上是不可见的。所以我的下一个想法是——好的,让我们找到一个具有调度能力的反向代理。然后我可以制作
78.78.78.78:8080/hr
“重定向”到内部10.10.10.10:1010/hr
78.78.78.78:8080/mail
“重定向”到内部20.20.20.20:2020/mail
我还希望,如果在未读邮件上看到邮件服务器未20.20.20.20:2020/mail/unread
读邮件,也可以从互联网访问。粗略地说-我希望
78.78.78.78:8080/mail/
* 重定向到内部20.20.20.20:2020/mail/
*(星号用作通配符)
我真的觉得我在这里错过了明显的东西,但老实说 - 我花了很长时间研究几个代理,但我没有找到答案。我可能正在寻找错误的单词或其他内容,但我找不到可以配置为将外部路径分派到不同内部路径的反向代理。
所以请 - 如果答案是例如 Apache mod_proxy - 请给我一个关于我应该寻找的参数名称的提示。最后 - 我将在 FreeBSD 操作系统中运行瘦身,但这不是一个严格的要求(其他 *nix 操作系统也可以)谢谢!