簡體   English   中英

Nginx從AWS公共子網重定向到私有子網不起作用

[英]nginx redirect from aws public subnet to private subnet not working

我有一個設置有公共子網和私有子網的Amazon Web Services VPC。 我在公共子網中有一個Nginx服務器,它接收DNS請求。 但是,我想將這些請求重定向到專用子網Web服務器。 我通過使用curl到私有子網計算機的私有IP(不可公開路由)測試了從nginx機器進行的AWS / VPC路由。 Curl返回預期結果。 但是,當我讓nginx對相同的專用IP執行返回301時,結果是搜索引擎結果,就好像重定向發生在路由表規則之外並且未被識別為有效地址。 我是否缺少nginx配置?

是的-請記住,“重定向”將使用301或302代碼以及要訪問的新地址來響應客戶端瀏覽器。 如果該地址不是可公開路由的,它將失敗,因為它是瀏覽器在請求重定向地址,而不是代理服務器(nginx)。 為了證明這一點,如果您將nginx設置為重定向到http://www.yahoo.com ,它將可以正常工作。

相反,您應該使用nginx的代理功能 -這意味着nginx接收請求,將請求傳遞給代理服務器,從請求中獲取響應,然后將其發送給客戶端。

最基本的實現是在nginx配置文件中的服務器指令中創建一個位置指令:

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

這會將所有請求傳遞到公共IP到私有IP。 當然,您可以使用請求/響應頭,資源等來做很多事情。一個好的起點可能是設置簡單代理服務器 該鏈接還具有更多配置選項,是一個很好的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM