簡體   English   中英

使用ssl的nginx或節點應用程序

[英]nginx or node app using ssl

我有nodejs表示坐在nginx后面。 目前一切正常。 我使用SSL實現了Nginx以使用https,然后只需將請求轉發到指定端口上的運行節點應用程序。 我想知道這是否是最好的方法呢? 這是我現在擁有的......

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name mysite.somethingelse.com www.mysite.somethingelse.*;
    ssl_certificate /path/to/my/cert.pem;
    ssl_certificate_key /path/to/my/key.key;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

如果我只是在快速端實現https服務器怎么辦? 然后將請求代理到那個,並讓它做所有的解碼? 像這樣的東西:

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name mysite.somethingelse.com www.mysite.somethingelse.*;
    location / {
        proxy_pass https://localhost:3000;
        proxy_http_version 1.1;
        proxy_cert path/to/cert.pem
        proxy_key path/to/key.key
    }
}

第二個版本可能甚至不正確。 但我想要的是在節點應用程序上實現SSL,而不是讓nginx這樣做。

  1. 做一個與另一個有什么關系嗎?
  2. 這里最好的做法是什么...讓nginx或節點應用程序這樣做?
  3. 而且,假設在節點應用程序上做得更好,這里設置nginx的正確實現是什么?

謝謝!

如果您正在追求性能並在多個節點實例之間實現負載平衡,那么在獨立計算機上終止SSL是個好主意。 但是,如果您要運行節點應用程序的單個實例並且預計負載不高,那么在節點中設置SSL可能更簡單。 另外我建議你不要使用nginx並切換到NAT(使用防火牆),因為這種方法將使用更少的資源。

支持在nginx上終止SSL的另一個論點是文檔和配置最佳實踐。 您應該知道配置SSL不僅僅是關於設置證書和私鑰,還有很多關於不同密碼,協議和漏洞的安全注意事項。 並且更容易找到nginx的工作解決方案,技巧和配置示例,而不是節點。

所以關於你的問題:

  1. 這取決於你的目標。
  2. 這取決於你的目標,但我建議你目前使用nginx進行SSL終止。
  3. 在這種情況下,我建議你實現NAT而不是nginx。

暫無
暫無

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

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