Nginx代理基于SNI而无需解密

前端之家收集整理的这篇文章主要介绍了Nginx代理基于SNI而无需解密前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我目前正在使用以下(简化)配置来代理同一端口上的http和https连接(aws elastic beanstalk所需):

server {
    listen 777 ssl;
    server_name foo.com;
    ssl_certificate /etc/Nginx/ssl/foo.crt;
    ssl_certificate_key /etc/Nginx/ssl/foo;

    root /usr/share/Nginx/www;
    index index.html index.htm;

    error_page 418 = @upstream;
    error_page 497 = @upstream;

    location / {
        return 418;
    }

    location @upstream {
        proxy_set_header  X-Forwarded-Proto  $scheme;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
    }
}

我想将上游更改为uwsgi并让uwsgi处理ssl,因为它可以简化部署.

如何在没有Nginx解密ssl流量的情况下调整我的配置以适用于SNI HTTPS和HTTP?

最佳答案
不,你不能用Nginx.默认情况下,Nginx始终在解密内容,因此Nginx可以应用请求路由.一些可以尝试的解决方案:

>有第三方模块叫nginx_tcp_proxy_module.我还没有尝试过.因为该模块在网络层上执行代理,所以它将在不解密的情况下传递请求.
>首选解决方案是使用HAProxy. This tutorial建议你可以使用SNI功能进行TCP代理.

边注

默认情况下,Nginx始终充当代理上的SSL卸载/解密过程.这里有一些做SSL卸载的优点(取自here)

>提高性能
>更好地利用后端服务器
>智能路由
>证书管理
>安全补丁

猜你在找的Nginx相关文章