2014-03-19 27 views
2

我有一个Amazon Web Services VPC设置了公有和私有子网。我在公共子网上有一个接收DNS请求的nginx服务器。但是,我想将这些请求重定向到私有子网网络服务器。我通过使用curl到私有子网机器的私有IP(非公用路由)来测试nginx机器上的AWS/VPC路由。 Curl返回预期结果。然而,当我有nginx做了一个返回301到相同的专用IP,结果是搜索引擎的结果,就好像重定向发生在路由表规则之外,并且不被识别为有效地址。有没有我错过的nginx配置?nginx从aws公共子网重定向到私有子网不起作用

回答

4

是的 - 请记住,'重定向'将以301或302代码和新地址访问客户端浏览器。如果地址不可公开路由,它将失败,因为它是请求重定向地址的浏览器,而不是代理服务器(nginx)。为了证明这一点,如果你设置你的nginx重定向到http://www.yahoo.com,它会工作的很好。

相反,您应该使用nginx的proxy capabilities - 这意味着nginx会接收请求,将它们传递给代理服务器,从中检索响应并将它们发送给客户端。

最基本的实现是Nginx的配置文件在您的服务器指令中创建一个位置指令:

location/{ 
    proxy_pass http://10.0.0.5/; 
} 

这将传递给大众IP的所有请求到私有IP。当然,您可以通过请求/响应头文件,资源等来做很多事情。一个好的起点可能是Setting Up a Simple Proxy ServerThis link也有一些更多的配置选项,是一个很好的例子。

相关问题