В этой статье рассказывается о взаимосвязи между PHP-FPM, Nginx и FastCGI, а также о настройке обратного прокси-сервера Nginx и балансировке нагрузки.
Связь между PHP-FPM, Nginx, FastCGI
FastCGI — это протокол, соединяющий приложения и веб-серверы. Nginx не взаимодействует напрямую с PHP-FPM, а передает запросы PHP-FPM через FastCGI для обработки.
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Здесь fastcgi_pass должен пересылать все php-запросы на php-fpm для обработки. Как видно из команды netstat, на порту 127.0.0.1:9000 запущен процесс php-fpm.
Обратный прокси Nginx
Наиболее важной директивой обратного прокси Nginx является proxy_pass, например:
location ^~ /seckill_query/ {
proxy_pass http://ris.filemail.gdrive:8090/;
proxy_set_header Host ris.filemail.gdrive;
}
location ^~ /push_message/ {
proxy_pass http://channel.filemail.gdrive:8090/;
proxy_set_header Host channel.filemail.gdrive;
}
location ^~ /data/ {
proxy_pass http://ds.filemail.gdrive:8087/;
proxy_set_header Host ds.filemail.gdrive;
}
Сопоставьте путь URL-адреса по местоположению и перенаправьте его на другой сервер для обработки.
Обратный прокси-сервер также может быть реализован путем балансировки нагрузки вверх по течению.
Балансировка нагрузки Nginx
Представляем восходящий модуль:
Модуль балансировки нагрузки используется для выбора хоста из списка серверных хостов, определенного директивой «upstream». Nginx сначала использует модуль балансировки нагрузки для поиска хоста, а затем использует восходящий модуль для взаимодействия с этим хостом.
Конфигурация балансировки нагрузки:
upstream php-upstream {
ip_hash;
server 192.168.0.1;
server 192.168.0.2;
}
location / {
root html;
index index.html index.htm;
proxy_pass http://php-upstream;
}
В этом примере определяется конфигурация балансировки нагрузки php-upstream, которая применяется с помощью директивы обратного прокси-сервера proxy_pass. Алгоритм ip_hash используется здесь, существует множество алгоритмов балансировки нагрузки, поэтому я не буду перечислять их по одному.
Балансировку нагрузки также можно использовать на fastcgi_pass.
Такие как:
fastcgi_pass http://php-upstream
вопрос
Какая связь между обратным прокси и балансировкой нагрузки
Слова обратный прокси-сервер и балансировка нагрузки часто встречаются вместе, но на самом деле это разные понятия Балансировка нагрузки — это скорее алгоритм или стратегия, которая распределяет запросы на разные машины, поэтому на самом деле она также действует как обратный прокси-сервер.
Разница между proxy_pass и fastcgi_pass
Один из них является обратным прокси-модулем, а другой перенаправляется на серверную часть factcgi для обработки.
Оригинальный адрес:блог. Разговор о боли. What/2017/11/That I…