Node.js HTTP到HTTPS重定向-Nginx vs Node Express

Node.js HTTP到HTTPS重定向-Nginx vs Node Express,node.js,http,express,nginx,Node.js,Http,Express,Nginx,我想将HTTP流量重定向到我网站的安全HTTPS版本。我正在nginx服务器上运行NodeJS-Express。执行重定向的最佳方法是什么:使用nginx或Express?这两个选项之间是否存在显著差异,例如性能?这完全取决于您的操作方式,但性能差异可能微不足道。我通常做的是,当nginx处理SSL密钥和证书时,我还让它处理重定向。这样,节点应用程序甚至不需要知道HTTP——它所关心的只是为来自反向代理的请求提供服务 nginx配置示例: server { lis

我想将HTTP流量重定向到我网站的安全HTTPS版本。我正在nginx服务器上运行NodeJS-Express。执行重定向的最佳方法是什么:使用nginx或Express?这两个选项之间是否存在显著差异,例如性能?

这完全取决于您的操作方式,但性能差异可能微不足道。我通常做的是,当nginx处理SSL密钥和证书时,我还让它处理重定向。这样,节点应用程序甚至不需要知道HTTP——它所关心的只是为来自反向代理的请求提供服务

nginx配置示例:

    server {
            listen 80;
            server_name example.com;
            add_header Strict-Transport-Security "max-age=3600";
            root /www/example.com/html;
            index index.html index.htm;

            location / {
                    return 302 https://example.com$request_uri;
            }
    }

请记住,如果您正在使用Let’s Encrypt,您需要暂时关闭重定向到HTTPS,但仅在证书续订期间关闭。值得注意的是,当您的证书续订失败时,可能很难进行诊断。

感谢您提供了信息丰富的答案。我确实在使用Let's Encrypt,所以我正在考虑使用Node选项,以避免我和我的同事在续费时忘记禁用它的麻烦,特别是如果您所说的性能没有显著差异的话。另外,是否有任何理由使用302状态码而不是301(或308)呢?@DuncanLuk如果您需要永久重定向,您可以使用301,但我通常更喜欢在需要时关闭和打开它。301应该被缓存,并告诉客户端以后不要使用原始URL。我通常不使用307和308,因为出于安全原因,我不希望POST/PUT/DELETE等使用重定向-我不希望发送潜在的敏感数据,获得重定向并安全地再次发送。我希望打破这种情况,并强制除GET之外的其他方法显式使用HTTPS。对我来说,重定向主要针对浏览器,但您的里程可能会有所不同。