Nginx

AWS:NGinx 反向代理和安全組

  • November 18, 2017

我有兩台伺服器,分別稱為 NGinxServer 和 AppServer。NGinxServer 是對 AppServer 的所有呼叫的可訪問入口點。出於安全原因,我將 AppServer 的安全組修改為不允許任何連接,但來自 NGinxServer 安全組 (NGinxServer-SG) 的連接除外。但是,當我這樣做時,我無法完成來自 Web Browser -> NGinxServer -> AppServer 的任何代理請求。

我可能做錯了什麼?我認為 NGinx 代理了連接的整個持續時間,但我只能認為 NGinx 要麼正在傳遞被安全組規則阻止的連接,要麼 AWS 正在看到仍然有數據顯示它的代理流量作為源自 Web 瀏覽器,而不是 NGinx 並相應地阻止它。

任何幫助是極大的讚賞。

編輯解決方案:邁克爾提供的評論/答案 - sqlbot 是正確的解決方案。我使用的是公共 IP而不是私有 IP

在此處輸入圖像描述

從 VPC 內部訪問內部目標時使用內部目標的公共 IP 存在幾個問題:

源電腦作為特定安全組成員的身份失去,因為流量必須離開您的 VPC 並通過 Internet 網關返回。此時,它不再是“內部”流量。

更糟糕的是,您要為這些流量付費以離開您的 VPC,然後為它再次返回付費。

這僅相當於大約 $ 0.02/GB in most regions, $ 0.01/GB 輸出和 0.01 美元/GB 輸入,但這是不必要的成本並增加了少量延遲。

https://aws.amazon.com/ec2/pricing/on-demand/

另請注意,如果您需要一個實例的主機名,該主機名在內部或外部訪問時行為不同,則可以使用一些內置的 DNS 魔法。

如果您的實例的公有 IP 地址是 203.0.113.20 並且它的公有 DNS 主機名如下所示:

ec2-203-0-113-20.compute-1.amazonaws.com

然後你可以像這樣創建一個 DNS CNAME:

my-instance.example.com CNAME ec2-203-0-113-20.compute-1.amazonaws.com.

使用此配置,如果您在 VPC 內部使用my-instance.example.com主機名,它將自動解析為私有IP,如果您在外部使用它,則會自動解析為**公共IP。

另請注意,在私有伺服器的情況下,您確實應該將它放在私有子網上,當它發出訪問 Internet 的傳出請求(例如,下載更新、設置其時鐘和訪問第 3 方)時,使用 NAT 網關或 NAT 實例蜜蜂)。

跨可用區內的子網邊界的流量沒有性能損失或費用。看起來流量通過一個額外的路由器來跨越子網邊界,但這個路由器實際上並不存在——在一個 AZ 內的單個 VPC 內跨越子網的流量實際上不會通過任何額外的設備……所以你的代理可以位於公共子網中,此 Web 伺服器可以位於私有子網中。

引用自:https://serverfault.com/questions/884039