子域的 Nginx 反向流代理“curl: (52) 来自服务器的空回复”

子域的 Nginx 反向流代理“curl: (52) 来自服务器的空回复”

我正在尝试设置反向代理以将 tcp 从 subdomain.example.com 重定向到localhost:3000使用 Nginx 的ssl_preread_server_name模块。

主机test.localhost是为了测试目的而定义的/etc/hosts/

我的/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

stream {
        map $ssl_preread_server_name $name {
        test.localhost test;
        }

        upstream test {
                server localhost:3000;
        }

        server {
                listen 2600;
                proxy_pass $name;
                #proxy_protocol on;
                ssl_preread on;
        }
}

当我直接尝试网络应用程序时curl

$ curl localhost:3000
Hello World!

但是当我尝试代理时:

$ curl -vvv test.localhost:2600
*   Trying 127.0.0.1:2600...
* Connected to test.localhost (127.0.0.1) port 2600 (#0)
> GET / HTTP/1.1
> Host: test.localhost:2600
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Empty reply from server
* Connection #0 to host test.localhost left intact
curl: (52) Empty reply from server

将其更改为proxy_pass test;可以,但我希望多个子域将 TCP 流式传输到不同的本地端口。

答案1

重点是SSL。

也许你应该尝试

curl https://test.localhost:2600

相关内容