我想从主机为VM中运行的两个或多个Web应用程序提供服务(不同的端口,并且同一端口下的目录的时间不同),因为我需要用户登录后才能访问这些我无法使用的应用程序 Nginx或Apache之类的静态代理。
所以这是我的情况:
192.168.1.1 : is the host ip
192.168.1.2 : is the VM ip
在虚拟机内部,我有这个:
192.168.1.2/owncloud : owncloud address
192.168.1.2:8080 : an other app
192.168.1.2:8888 : 3rd app
我想要这个:
192.168.1.1/app1 --> 192.168.1.2/owncloud
192.168.1.1/app2 --> 192.168.1.2:8080
192.168.1.1/app2 --> 192.168.1.2:8888
我尝试使用golang httputil.ReverseProxy来实现此路由,但没有成功:
我的代码基于此工作:要点
您最好通过主机名而不是URL来执行此操作。例如
如果您还不知道,主机名只是一个HTTP请求标头(Host:domain.com),因此每个IP可以有多个主机名(Apache称其为"命名虚拟主机")。
使用主机名而不是URL的好处是,另一端的Web应用程序不知道要添加前缀的URL,但需要兑现它们,因此您可能会遇到问题,因为Web应用程序编写的URL并非与反向代理期望的URL进行交互。基于主机名的代理应该在哪里工作,因为大多数Web应用程序都不会重写域名。 (尽管这是一个巨大的概括,但是某些Web应用程序允许您添加代理地址-但通常您会遇到较少的主机名问题)
最大的问题是必须在名称服务器上设置子域。我假设您的registra / DNS提供商允许您免费创建子域(大多数情况下应该如此),但是如果您使用的是动态DNS之类的东西,而这却无法通过您的家庭宽带连接运行,那么您将遇到问题,并且将购买带有CNAME到您的动态DNS地址的子域名的您自己的域名(或者,如果您提供的是子域名,则使用您的动态DNS提供商的付费帐户)。
最后一件事,如果您正在研究owncloud,那么您可能还希望看看Pydio(以前称为AjaxExplore)。它们都有各自的长处和短处,但是以我个人的观点,Pydio是更好的产品。
制作这样的地图
使用
听和服务
您可以将
这是一个最适合您的SSLDocker项目。
您将错误的IP传递给反向代理。应该是您的VM的
在文档中