我有一个设置了公有和私有子网的 Amazon Web Services VPC。我在公共子网上有一个 nginx 服务器接收 DNS 请求。但是,我想将这些请求重定向到私有子网网络服务器。我使用 curl 测试了从 nginx 机器到私有子网机器的私有 IP(不可公开路由)的 AWS/VPC 路由。卷曲返回预期结果。但是,当我让 nginx 返回 301 到相同的私有 IP 时,结果是搜索引擎结果,好像重定向发生在路由表规则之外并且未被识别为有效地址。是否有我缺少的 nginx 配置?
问问题
2369 次
1 回答
4
是的 - 请记住,“重定向”将使用 301 或 302 代码以及要访问的新地址响应客户端浏览器。如果地址不可公开路由,则会失败,因为请求重定向地址的是浏览器,而不是代理服务器(nginx)。为了证明这一点,如果您将 nginx 设置为重定向到http://www.yahoo.com,它会很好地工作。
相反,您应该使用 nginx 的代理功能——这意味着 nginx 接收请求,将它们传递给代理服务器,从它们检索响应,并将它们发送给客户端。
最基本的实现是在 nginx 配置文件中的 server 指令中创建一个 location 指令:
location / {
proxy_pass http://10.0.0.5/;
}
这会将所有对公共 IP 的请求传递到私有 IP。当然,您可以使用请求/响应标头、资源等做很多事情。一个好的起点可能是设置一个简单的代理服务器。这个链接也有更多的配置选项,是一个很好的例子。
于 2014-03-19T02:21:08.973 回答