优化 Apache 作为 Nginx 后端服务

优化 Apache 作为 Nginx 后端服务

Apache (2.4.x) 是一个著名的服务器,其性能优化被广泛讨论并且有详尽的文档。

尽管如此,对于 Apache 反向代理的情况(在 Nginx 或任何其他软件后面),我想知道就性能而言什么最适合 Apache。

考虑这个非常简单的 Nginx 配置:

server {
    keepalive_timeout 300s;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass  http://localhost:8080;
        proxy_pass_header Content-type;
    }
}

在没有给出实际值(与硬件、流量和应用程序类型密切相关)的情况下,与通常用于前端服务器的逻辑相比,其逻辑是否应该在某些方面有所不同?

例如,当我们谈论服务器与服务器(硬件)时,甚至经常两个服务器(软件)都在本地主机上通信,这是keepalive一种好的做法吗?如果是,是否有一个基准可以开始?

Apache 会将所有 Nginx 请求视为同一个客户端还是其中一个,X-Real-IPX-Real-IP或者X-Forwarded-For会让 Apache 考虑来自不同客户端的请求?

我认为就 Apache 而言,客户端是IP_SRC:端口

我的意思是,如果所有通过 Nginx 代理的请求都被视为一个客户端,那么 Apache 将如何尊重MaxConnectionsPerChild

Apache 将如何mod_prefork分叉(或不分叉)工作进程?在此模式中,客户端和工作进程是 1:1 关系。由于工作进程无法同时处理多个客户端,因此请求是否会排队,直到有空闲的工作进程可用?

对于这种设置,是否有应该注意的最佳实践?

是否有一种模式比另一种更受青睐?或者应该避免使用其中一种模式?

相关内容