【问题标题】:nginx proxy pass Node, SSL?nginx代理传递节点,SSL?
【发布时间】:2012-05-09 16:17:49
【问题描述】:

我的 nginx 服务器实际上是用一个简单的代理我的节点后端(监听端口 3000):

location /api/ {
proxy_pass http://upstream_1;
}

其中 upstream_1 是我在 nginx.conf 中定义的节点集群(在端口 3000 上)。

我将不得不通过http连接添加SSL,所以我有以下问题:我只需要配置nginx来启用ssl吗?它会自动“解密”请求并将其未加密传递给能够正常处理它的节点吗?或者我是否也需要配置 Nodejs 以支持 ssl?

【问题讨论】:

    标签: node.js nginx reverse-proxy


    【解决方案1】:

    如果您使用 nginx 来处理 SSL,那么您的节点服务器将只使用 http。

        upstream nodejs { 
              server 127.0.0.1:4545 max_fails=0; 
        } 
    
       server { 
          listen 443; 
          ssl    on; 
          ssl_certificate    newlocalhost.crt; 
          ssl_certificate_key     newlocalhost.key; 
          server_name nodejs.newlocalhost.com; 
    
          add_header Strict-Transport-Security max-age=500; 
    
          location / { 
            proxy_pass  http://nodejs; 
            proxy_redirect off; 
            proxy_set_header Host $host ; 
            proxy_set_header X-Real-IP $remote_addr ; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; 
            proxy_set_header X-Forwarded-Proto https; 
          } 
       }
    

    【讨论】:

    • 感谢比尔的快速回答!所以我想没问题吧?因为我猜想从 nginx 到节点的欺骗代理并不容易?
    • 是的,这实际上是推荐的设置。 Nginx 应该与节点服务器在同一台机器上,或者通过内部 IP 与节点服务器通信,这样现在就有办法欺骗它了。
    • 在尝试通过 https 访问时,我总是收到连接被拒绝错误!我正在使用内部 ip(私有网络)代理到节点服务器,但我想这应该不是问题。
    • 您能否建议使用 HTTPS 时如何发送 X-XSRF-TOKEN?
    猜你喜欢
    • 2016-12-26
    • 2016-08-25
    • 2018-07-28
    • 1970-01-01
    • 2023-03-24
    • 2012-04-22
    • 2016-05-31
    • 2017-10-04
    • 2018-05-06
    相关资源
    最近更新 更多