首页 > 解决方案 > 是否可以在 nginx 中使用 SSL Passthrough 重定向 TCP 连接

问题描述

使用 nginx 中的块,TCP 代理在 nginx 中不可用。通过 SSL 直通配置,它可以将客户端证书一直传递到后端服务进行验证。

我想将此 TCP 连接从带有所有证书的 nginx 重定向到同一服务的 https 端点

更新的问题:所以请求即将到来http://demo.local需要重定向到https://demo.local然后在重定向 https 请求后进行 SSL 直通

----> Nginx 配置

http {
   server {
       listen 80;
       server_name demo.local;
       location / {
           return 302 https://demo.local$request_uri
       }
    }
}
stream {
# main log compatible format
    log_format stream '$remote_addr - - [$time_local] "$ssl_preread_server_name -> $name ($protocol)" '
                          '$status $bytes_sent "" "" "" ';

    map $ssl_preread_server_name $name {
        demo.local pt-up-demo.local;
    }
    upstream pt-up-demo.local {
        server 127.0.0.1:5000;
    }
    upstream proxy-up-demo.local {
        server x.x.x.x:8080;
    }
    server {
        listen 5000 proxy_protocol;
        proxy_pass proxy-up-demo.local'
    }
    server {
        listen 443;
        proxy_pass $name;
        proxy_protocol on;
        ssl_preread on;
        access_log /dev/stdout stream;
    }

}```

标签: sslnginxnginx-config

解决方案


HTTP 重定向是在 HTTP 级别而不是在 HTTPS 级别完成的。为了让 nginx 发出此重定向,TLS 连接需要由 nginx 终止 - 这与您想要的 SSL 直通冲突。


推荐阅读