為什麼要在 WSGI 伺服器前面放置反向代理?

為什麼要在 WSGI 伺服器前面放置反向代理?

部署 WSGI 應用程式的典型配置包括通用 Web 伺服器(如 nginx)後面的 WSGI 伺服器(如 uWSGI 或 Gunicorn),可作為反向代理。我知道使用反向代理的一個主要原因是有效地提供靜態文件。還有其他原因嗎?

假設我的應用程式僅涉及Python程式碼並且不關心靜態內容。在這種情況下為什麼我需要反向代理? uWSGI 和 Gunicorn 都已經提供了一個能夠與客戶端互動的非同步 HTTP 伺服器。

在任何實際情況下,我最好將 WSGI HTTP 伺服器直接暴露給外界嗎?

答案1

  • 你有更多的配置選項與成熟的反向代理類似

    • 改寫
    • 地點
    • 伺服器
    • https
    • 標頭清理
    • 過期
    • 壓縮包
    • ....
  • 你可以做負載平衡

  • 你可以使用 proxy_cache
  • 即使您的應用程式伺服器關閉,您也可以實作自訂錯誤頁面
  • 您可以實施 WAF
  • 您可以(有時)針對漏洞進行熱補丁

獎勵積分

  • 透過以下設定 (nginx),您可以每秒 100.000 個請求(在平均硬體上)給客戶留下深刻印象:

location /perftest/ {
    return 200;
}

答案2

使用反向代理的其他優點。

可以獲得其他可能對您有益的好處。

  • 您可以隱藏來自網際網路的資訊(Web伺服器版本、應用程式伺服器、資料庫伺服器、API)
  • 您可以在一個網域後面實作多種 Web 伺服器技術(Linux tomcat + Windows IIS 等)
  • 您可以終止 https/SSL 連線並將它們對應到內部 http 服務。
  • 您可以集中所有日誌記錄。
  • 您可以集中所有 DDOS 防禦
  • 您可以從 Web 伺服器層實施身分管理。

安全優勢

  • 內部伺服器隱藏如上。
  • 您可以透過網際網路對內部應用程式伺服器和資料庫伺服器進行路由/防火牆,而無需訴諸主機上的軟體防火牆(稱為 DMZ)。
  • 您可以保護無法立即修復的伺服器免受已知問題(Web 應用程式防火牆)或已知攻擊模式的影響。

相關內容