nginx server_name 可以在流块内吗?

问题描述 投票:0回答:3

当前设置如下:

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 的构建,这不是我的问题。)

nginx proxy stream reverse
3个回答
28
投票

TCP 没有服务器名称的概念,所以这是不可能的。它只起作用 在 HTTP 中,因为客户端发送它尝试访问的主机名 请求的一部分,允许 nginx 将其匹配到特定的服务器块。

来源:https://forum.nginx.org/read.php?2,263208,263217#msg-263217


4
投票

虽然它不在原始 nginx 中,但它是通过 SNI 在它的中文分支中实现的:https://tengine.taobao.org/document/stream_sni.html


0
投票

从 NGINX 1.25.5 开始,现在可以了

更多信息在这里:https://nginx.org/en/docs/stream/ngx_stream_core_module.html#server_name

© www.soinside.com 2019 - 2024. All rights reserved.