NGINX 流 ssl_preread 和 vhost

NGINX 流 ssl_preread 和 vhost

我尝试为我的 vdi(citrix)配置配置一个 vhost。conf 让我抓狂!我必须使用 ssl_preread 才能开始工作。实际上,我的 NGINX 配置是通过 CWP 进行的。我有一个子域 portal.xxx.net,它与 citrix 网关反向,位于 /etc/nginx/conf.d/vhosts/portal.xxx.conf。当我添加 ssl_preread=on; 时,我遇到了类似这样的错误:此处不允许使用指令。经过一番研究,我发现我必须使用“stream”指令。我将流配置添加到 vhost 配置中,但出现同样的错误:此处不允许使用指令。我发现我必须在 http conf 之外添加流 conf,但我使用的是 vhost... 无法在 nginx.conf 中执行此操作。我完全迷路了...

谢谢你的帮助

答案1

要为您的 Citrix 设置配置 NGINX ssl_preread,您需要stream在与常规 HTTP 服务器块不同的上下文中使用该指令。在上下文ssl_preread中用于stream实现具有 SSL/TLS SNI(服务器名称指示)感知的 TCP 负载平衡。您可以这样构造它:

  • 创建一个新的流配置文件:由于您使用 CWP 并已在 中配置虚拟主机/etc/nginx/conf.d,请为您的流配置创建一个新文件,例如/etc/nginx/conf.d/stream.conf
  • 配置流块:在此文件中,定义一个块并在其内部的块中stream使用。ssl_prereadserver
  • 链接到您的 Citrix Gateway:根据 SNI 将流量引导至您的 Citrix 网关。

以下是一个示例配置:

stream {
    server {
        listen 443;
        ssl_preread on;

        # Use the SNI to route to the appropriate backend
        resolver 127.0.0.11 valid=30s; # Adjust the resolver as needed
        proxy_pass $ssl_preread_server_name:$server_port;

        # Additional configurations as needed
    }
}

/etc/nginx/conf.d基本上,您为该块创建一个新的配置文件stream,与 HTTP 配置分开。在此文件中,您定义一个stream侦听端口 443 的服务器,启用ssl_preread并根据 SNI 将流量路由到您的 Citrix 网关。

相关内容