我遇到了 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。