当前设置如下:
stream {
server {
listen 9987 udp;
server_name subdomain.EXAMPLE.com; # this line is resulting in an error
proxy_pass localhost:9987;
proxy_timeout 1s;
proxy_responses 1;
error_log logs/dns.log;
}
}
服务器名称子域.EXAMPLE.com;
这可能吗?
$nginx -t
$nginx: [emerg] "server_name" directive is not allowed here in /etc/nginx/nginx.conf:15
没有 server_name 也可以正常工作,但如果可能的话我想使用子域。 (我正在使用带有 --with-stream 的构建,这不是我的问题。)
TCP 没有服务器名称的概念,所以这是不可能的。它只起作用 在 HTTP 中,因为客户端发送它尝试访问的主机名 请求的一部分,允许 nginx 将其匹配到特定的服务器块。
来源:https://forum.nginx.org/read.php?2,263208,263217#msg-263217
虽然它不在原始 nginx 中,但它是通过 SNI 在它的中文分支中实现的:https://tengine.taobao.org/document/stream_sni.html
从 NGINX 1.25.5 开始,现在可以了
更多信息在这里:https://nginx.org/en/docs/stream/ngx_stream_core_module.html#server_name