【问题标题】:Why are both servers behind my load balancer responding to every HTTP request?为什么我的负载均衡器后面的两台服务器都响应每个 HTTP 请求?
【发布时间】:2019-05-03 21:17:41
【问题描述】:

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

一切正常,但我注意到了一些奇怪之处。

假设发送了一个 POST。负载均衡器将 POST 发送到 server1。 Server1 确认 (POST) 并回复。但是 server2 承认 (OPTIONS)。

我不明白 server2 是如何知道对 server1 的 POST 请求的。

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

server2 肯定不知道 server1 在做什么?

感谢您的回复。

【问题讨论】:

    标签: node.js nginx digital-ocean


    【解决方案1】:

    负载平衡器似乎工作正常。它正在拆分请求,因为 POST 和 OPTIONS 是两个单独的请求。由于浏览器安全性和 CORS,发送了 OPTIONS 请求。不要认为 OPTIONS + POST 请求是同一个请求。它们是独立的,服务器需要对它们中的每一个做出响应,因此 server2 不知道 POST 请求,只知道 OPTIONS,因此负载均衡器可以正确完成其工作。

    【讨论】:

    • 谢谢 User9123。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回复。但是为什么 server1 回复 POST,server2 回复 OPTIONS?这只是每个服务器在它们之间共享请求吗?还是暗示正在发生一些奇怪的事情?
    • 看起来负载平衡工作正常,这里没什么奇怪的。
    • 谢谢加布里埃尔。
    猜你喜欢
    • 2015-11-07
    • 1970-01-01
    • 2013-06-19
    • 2022-08-21
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    相关资源
    最近更新 更多