nginx从aws公共子网重定向到私有子网无法正常工作

时间:2014-03-19 00:51:03

标签: redirect amazon-web-services nginx vpc

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

1 个答案:

答案 0 :(得分:4)

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

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

最基本的实现是在nginx配置文件中的server指令中创建location指令:

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

这会将对公共IP的所有请求传递给私有IP。当然,您可以使用请求/响应标头,资源等进行许多操作。一个好的起点可能是Setting Up a Simple Proxy ServerThis link还有一些配置选项,是一个很好的例子。