Afinogen
@Afinogen
PHP разработчик

Как сконфигурировать nginx на сколько php-fpm?

Добрый день!
Суть проблемы: есть 2 сервера. Основной - nginx+php-fpm+mysql и дополнительный (другой физический сервер, но в 1 локальной сети) - php-fpm
Идея состоит в том,чтобы часть запросов с конкретных url перенаправить на дополнительный. Таким образом разгрузив основной.
#url который надо обработать на другом сервере
location /cms-new/task-manager {
        try_files $uri index.php?$query_string @php-webhost;
}
location @php-webhost {
#       include nginxconfig.io/php_fastcgi_webhost.conf;
        include fastcgi_params;
        fastcgi_index                   index.php;
        fastcgi_buffers                 8 32k;
        fastcgi_buffer_size             64k;
        fastcgi_param SCRIPT_FILENAME   $realpath_root$fastcgi_script_name;
        fastcgi_pass xxx.xxx.xxx.xxx:9000;
}
#Все остальные обрабатываем на основном
location / {
        try_files $uri /index.php?$query_string;
}

location ~ \.php$ {
        include nginxconfig.io/php_fastcgi.conf;
        fastcgi_read_timeout 600;
}

В результате в php-fpm дополнительного сервера я получаю "GET /cms-new/task-manager/group/list/index.php" 404
И не как не могу настроить обработку этого адреса. Как /cms-new/task-manager/group/list/ передать уже в обработку index.php? Другая проблема, что неизвестно где этот index.php ищется.

Формат upstream мне не подходит, так как нужно конкретный url

UPD Частично разобрался. Заработал такой конфиг
location /cms-new/task-manager {
        try_files $uri /index.php?$query_string @php-webhost;
    }

    location @php-webhost {
        rewrite ^/(.*)$ /index.php?$1 break;
#       root /home/user/project/public;
        include fastcgi_params;
        fastcgi_index                   index.php;
        fastcgi_buffers                 8 32k;
        fastcgi_buffer_size             64k;
        fastcgi_param SCRIPT_FILENAME   /home/user/project/public$fastcgi_script_name;
#$realpath_root
        fastcgi_pass xxx.xxx.xxx.xxx:9000;
    }

$realpath_root ведет на туже папку, что и root в корне server. Если раскоментить root в секции location @php-webhost то страницы становятся 404. Работает только так fastcgi_param SCRIPT_FILENAME /home/user/project/public$fastcgi_script_name;
На 2м сервере другой пользователь и путь к проекту отличается.
  • Вопрос задан
  • 318 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Jewish_Cat
Увлекаюсь C#
Вот эта статья тебе поможет.
Если не поймешь, я тебе могу более подробно описать что нужно сделать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы