2014-03-19 31 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也有一些更多的配置選項,是一個很好的例子。

相關問題