2013-10-31 24 views
4

我想知道如何讓NginX(負載平衡器)在443接受流量並轉發到負載平衡的Web服務器節點上的端口443。如何不終止在NginX負載平衡器

我正在使用NginX作爲負載均衡器,其中SSL終止發生在NginX級別。然後nginx的發送未加密的流量到我的Web服務端口80

這是我目前ngnx配置:

upstream appserver { 
    server 10.0.1.132; 
    server 10.0.1.243; 
} 

server { 
    listen  443 ssl; 
    server_name localhost; 

    ssl_certificate  /etc/nginx/cert.pem; 
    ssl_certificate_key /etc/nginx/cert.key; 

    ssl_session_cache shared:SSL:1m; 
    ssl_session_timeout 5m; 

    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

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

我曾經走過:Nginx load balance with upstream SSL

我真正的問題是,如果我想NginX在443上監聽流量,然後我需要在nignx上配置ssl終止。否則nginx服務將無法啓動,並會抱怨缺少ssl證書/密鑰。

總之,我希望Nginx能夠簡單地接受443上的流量,並在負載平衡的Web服務器節點上將它轉發給443。然後讓我的web服務器完成SSL工作。

最佳做法是在負載均衡器級別執行SSL卸載,但我想另行做。

謝謝。

+0

你在問什麼叫做MITM攻擊:http://en.wikipedia.org/wiki/Man-in-the-middle_attack這正是SSL/TLS所能阻止的。 – VBart

+0

同意。那麼這是否意味着,如果想要使用負載均衡器(任何負載均衡器本身,而不僅僅是NginX),他必須在負載均衡器級別配置SSL終止?我可能會特別談論[這個](http://security.stackexchange.com/a/43097/34084)回答它建議有後端SSL的地方。我的要求並不像PCI人士所要求的那麼難。我只是想了解整個概念。 – slayedbylucifer

+3

如果你想使用像nginx這樣的第7層負載平衡器,那麼它需要取消加密連接才能訪問請求,並且你必須在nginx.conf中指定keys/certs。之後,可以在發送到後端之前再次加密(使用'proxy_pass https:// appserver')。您可以使用其中一種L4平衡器來平衡TLS在TCP層上的其他方式。 – VBart

回答

1

這需要NGINX部分的第4層監聽/路由,這顯然不是entirelysupported。 NGINX似乎支持SNI,但由於某種原因,我無法阻止它終止TLS連接。

我結束了使用HAProxy。