Nginx 前端到龙卷风

Nginx front end to tornado

我目前使用 nginx 运行 作为负载均衡器和 tornado 的反向代理。

一旦我设置我的 nginx 来处理端口 443 上的 SSL 连接并重定向到适当的龙卷风后端。我是否需要更改龙卷风配置来处理 HTTPS?我正在让 nginx 处理证书:

        ssl_certificate "/etc/pki/nginx/server.crt";
        ssl_certificate_key "/etc/pki/nginx/private/server.key";

到目前为止,tornado 的所有配置都是在 tornado 用作独立网络服务器并在设置中处理这些认证时

http_server = tornado.httpserver.HTTPServer(application, ssl_options={
        "certfile": "server.csr",
        "keyfile": "server.key",
    })

我需要什么设置才能在侦听进程上提供龙卷风来处理来自 nginx 的传入 SSL 连接?

谢谢

答案取决于您是想在 nginx 和 tornado 服务器之间使用 TLS,还是允许 link 保持透明。

要加密连接,请为龙卷风服务器提供一对 certificate/key 与 nginx 将用于联系它们的主机名相匹配的对。您可能希望为此使用自签名 CA,并将 nginx 配置为信任该 CA 的后端连接。在这种情况下,您的 nginx 配置的 backends 部分将使用 https://

不加密 nginx 和 tornado 之间的连接(但让最终用户的流量加密),从 tornado 服务器中删除 ssl 配置并在你的 nginx backends 部分使用 http:// .

在这两种情况下,您可能希望在 Tornado HTTP 服务器中设置 xheaders=True 并添加来自 http://www.tornadoweb.org/en/stable/guide/running.html#running-behind-a-load-balancerproxy_set_header 指令,以便像 request.protocol 这样的字段设置正确。