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;
}
}
Если не указывать фактические значения (которые сильно привязаны к оборудованию, трафику и типу приложения), должна ли логика отличаться определенным образом от того, что обычно применяется для серверов переднего плана?
Например, когда мы говорим сервер с сервером (оборудование) - и часто даже оба сервера (программное обеспечение) обмениваются данными на localhost - это keepalive
хорошая практика? Если да, то с чего начать?
Будет ли Apache рассматривать все запросы Nginx как один и тот же клиент или как один из X-Real-IPX-Real-IP
или X-Forwarded-For
заставит ли Apache учитывать запросы от разных клиентов?
Я полагаю, что для Apache клиент - это IP_SRC: Порт.
Я имею в виду, что если все запросы, проксируемые через Nginx, считаются одним клиентом, как Apache будет уважать MaxConnectionsPerChild
?
Как будет Apache с mod_prefork
будет форк (или нет) рабочих? В этом моде отношения между клиентами и рабочими составляют 1: 1. И поскольку рабочие не могут обрабатывать более одного клиента одновременно, будут ли запросы ставиться в очередь, пока не появится свободный рабочий?
Есть ли лучшие практики, о которых следует знать для такого рода настроек?
Есть ли один мод, который может быть предпочтительнее другого? Или следует избегать одного мода?