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 (engine x) 是一个高性能的HTTP和反向代理服务,也是一...
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改l...
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看...
一 、此次漏洞分析 1 nginx HTTP/2漏洞 [nginx-announce] ng...
###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...