nginx能同时反向代理到两个不同协议(http, https)吗?

新手上路,请多包涵

nginx能同时反向代理到两个不同协议的地址吗?

upstream abc.http{

server 1.2.3.4:8080

}
upstream abc.https{

server 1.2.3.5:8443

}

server {

listen       443 ssl;
server_name  localhost;
location / {
    proxy_pass http://abc.http;
}
listen       443 ssl;
server_name  localhost;
location / {
    proxy_pass https://abc.https;
}

}

阅读 21.4k
2 个回答

反向代理的本质是 nginx 收到客户端请求后、按照特定配置构造一个新的 HTTP 请求、发送给真正的后端、接收到响应后、再原样返回给客户端。

那么请问你,你 nginx 发送了两个 HTTP 请求给两个后端,它要怎么返回给客户端时变成一个响应的?

如果你真的有这种“聚合”的需要,你需要的是 kong 之类的 API Gateway,而不是简单的 nginx。

另外你题目描述的就很奇怪,究竟是什么场景下需要客户端发送一个请求、能收到两个响应的?我感觉是你应该描述一下实际需求,而不是自己瞎琢磨一个解决方案出来问行不行。

同意楼上的说法,你的nginx配置明显有问题啊,重复配置了location /,nginx 只会匹配到1个的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题