我们公司有一个内部API(.NET WebApi),可以为我们的许多应用程序提供服务。现在,我们将在外面托管一个应用程序,并决定不打开我们的主服务器到互联网。
相反,他们将在我们的防火墙中正确设置的分离服务器中创建一个包装器,并且可以访问我们的网络。
问题是:我们希望这个包装器API尽可能简单,并且基本上将请求重定向到我们的内部API。
这样的事情:
[HttpGet]
[Route("api/PDF/{orderid}")]
public IHttpActionResult GetOrderPDF(string orderid, bool showpictures = false, string disposition = "attachment")
{
string url = "http://MYINTERNALSERVER/api/PDF/" + orderid;
System.Uri uri = new System.Uri(url);
return Redirect(uri); //Server.Transfer ?
}
使用此方法的问题是我的外部客户端将尝试访问我们的内部服务器,当然,将无法访问。
我们想要一个包装器,所以我们只公开我们想要的方法。
我读到了有关IIS重定向的信息,但如果我重定向所有请求,我几乎都会将所有方法暴露给互联网。
有什么建议吗?
答案 0 :(得分:3)
第一次需要执行POST请求时,这种方法将会崩溃,因为您无法重定向POST操作。
您不需要全新的应用程序。您需要的是互联网公开可用的反向代理(考虑NGINX)。它可以将防火墙上的流量代理到为WebAPI提供服务的任何内容。
这里的好处是: