我目前正在使用 Nginx Web 服务器开发 Go (net/http) 微服务来处理来自互联网的请求。我的用例要求此服务器每次只能处理一个请求。如果同时有多个请求,它必须能够等到当前请求完成(或超时)然后再处理下一个请求(按到达顺序或 FIFO)。我想知道这是否必须在应用程序(Go)层或 Web 服务器(Nginx)层处理。我的直觉驱使我在 Web 服务器层处理这个问题,但我不确定。这可能吗?如果可以,您将如何在 Web 服务器(Nginx)层处理这个问题?
答案1
Web 服务器或应用程序逻辑有自己的职责,即服务请求和处理应用程序逻辑。按顺序处理请求不是任何一方的责任。这必须通过消息队列来完成,例如 RabbitMQ、Redis、AWS SQS 等。
答案2
理论上,你可以在服务器配置中通过指定来实现这一点worker_connections设置为值 2(一个用于客户端,一个用于连接到 FastCGI 以读取应用程序响应等)并设置worker_processes
为1
。
那么 NGINX 在任何给定时间都只能为单个客户端提供服务。