Связь между PHP-FPM, Nginx, FastCGI

PHP Nginx

В этой статье рассказывается о взаимосвязи между 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.

file
file

Обратный прокси 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 для обработки.

file
file

Оригинальный адрес:блог. Разговор о боли. What/2017/11/That I…