Nginx

使用 AWS Elastic Load Balancer、Nginx 和 SSL 進行完整的端到端加密

  • July 1, 2016

您會在網上看到很多地方告訴您使用 AWS ELB 設置 SSL 的方法是在負載均衡器上設置證書,然後將流量從埠 443 轉發到 80,以便負載均衡器和 nginx 之間的流量是未加密。對我來說,這似乎不是很安全,因為您有未加密的數據通過網路連接流動。如果該數據是信用卡資訊怎麼辦?

我的問題:

  1. 負載均衡器和 nginx 之間的未加密連接是否會帶來安全風險?
  2. 如果 1 的答案是肯定的,我將如何設置 nginx 以允許來自負載均衡器的安全連接?
  3. 這會涉及在每個 nginx 伺服器上設置一個 ssl 證書嗎?
  4. 如果 nginx 配置需要不同於標準 ssl 設置(其中 nginx 不在負載均衡器後面),它會是什麼樣子?

負載均衡器和 nginx 之間的未加密連接是否會帶來安全風險?

  • 如果談論信用卡數據和類似的東西:是的。

如果 1 的答案是肯定的,我將如何設置 nginx 以允許來自負載均衡器的安全連接?這會涉及在每個 nginx 伺服器上設置一個 ssl 證書嗎?

  • 配置是/將nginx是相當標準的,沒什麼特別的。
  • 是的,您需要在每台執行nginx. 您可以為此使用一個證書,不一定需要多個證書。此外:使用Lets Encrypt現在可以相當容易且自動化地免費獲得證書。
  • 如果您在 ELB 和您的機器之間發送敏感數據,請確保此/這些連結也已加密。文件中解釋瞭如何執行此操作。

如果 nginx 配置需要不同於標準 ssl 設置(其中 nginx 不在負載均衡器後面),它會是什麼樣子?

  • 據我所知,沒有太大區別。如果您出於某種原因需要客戶端 IP,請將這些行放入您的nginx配置中:
real_ip_header X-Forwarded-For;
set_real_ip_from ${ip-of-your-elb}/${netmask-of-your-elb};
  • 獎勵:設置您的“自己的 ELB”,例如使用出色的HAProxy。通過這種方式,您可以自己處理 ELB 和後端機器之間的加密,使用任何看起來/合適的方式:https、ssh 隧道、VPN ……

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