为什么负载均衡器后面的两个服务器都响应每个HTTP请求?

时间:2018-06-25 15:36:08

标签: node.js nginx digital-ocean

我有一个Digital Ocean负载均衡器。负载均衡器后面是两个服务器。两台服务器都使用nginx反向代理,该代理将流量转发到节点脚本。

一切正常,但是我注意到有些奇怪。

比方说POST已发送。负载平衡器将POST发送到server1。 Server1确认(POST)并回复。但是server2会确认(选项)。

我不明白server2怎么知道对server1的POST请求。

每次server1回复POST请求时,server2为什么都会用OPTIONS进行回复?

服务器2当然不应该知道服务器1在做什么吗?

感谢您的答复。

2 个答案:

答案 0 :(得分:2)

负载均衡器似乎正在工作。它正在拆分请求,因为POST和OPTIONS是两个单独的请求。由于浏览器的安全性和CORS,发送了OPTIONS请求。不要将OPTIONS + POST请求视为同一请求。它们是分开的,服务器需要响应它们中的每一个,因此server2不知道POST请求,而只知道OPTIONS,因此负载均衡器可以正确地执行其工作。

答案 1 :(得分:1)

这就是CORS预检请求的工作方式,请查看您的浏览器,您应该看到两个请求,一个OPTIONS和一个POST。

第一个OPTIONS请求在此处检查是否允许您的客户端访问您的API,第二个POST是您的API调用。