Nginx tcp代理路由基于协议,类似Haproxy

Nginx tcp代理路由基于协议,类似Haproxy

我遇到了 nginx 问题。我编写了一个带有端口 8888 的自定义后端。9999 端口后端是一个 http 服务器。

我想根据 Nginx 中的 tls 终止原始协议将请求路由到不同的后端,就像 Haproxy 一样。

Https(tls终止后为http)请求路由到httpBackend,在Haproxy中我可以使用use_backend ** if HTTP,然后请求https://aa.aa它返回网页。

其他 tls 请求路由到 customBackend,在 Haproxy 中我可以使用代码default_backend **

那么我怎样才能在 Nginx 中做像 Haproxy 一样的事情呢?

谢谢!

Nginx 代码:

stream {
        upstream custombackend{
                server 127.0.0.1:8888;
        }
        upstream httpbackend{
                server 127.0.0.1:9999;
        }
        server {
                listen 443 ssl;
                // only route to httpbackend..
                proxy_pass httpbackend;
                ssl_certificate /etc/cert/fullchain.cer;
                ssl_certificate_key /etc/cert/aa.aa.key;
        }
}
http{
    server {
        listen       9999;
        server_name  aa.aa;
        ......
}

Haproxy代码:

defaults
    log global
    mode tcp

frontend tls-in
    bind *:443 tfo ssl crt /etc/ssl/private/aa.aa.pem
    tcp-request content accept if HTTP
    tcp-request inspect-delay 5s
    // which Nginx code could route request just like below ??
    use_backend httpback if HTTP
    default_backend customback

backend customback
    server server1 127.0.0.1:8888

backend httpback
    server server1 127.0.0.1:9999

答案1

好吧,我找到了一种使用 ngx_stream_js_module 的方法,但我不认为它的性能可以与 Haproxy 相比,所以我会使用 haproxy。

相关内容