我尝试为我的 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_preread
server
- 链接到您的 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 网关。