@Nday001

NGINX. Как использовать разные php для разных location?

Есть NGINX, используемый в качестве веб сервера для example.com/site1 и в качестве реверс прокси для example.com/site2.
Как использовать "встроенный" php-fpm для site1, а запросы к site2 проксировать?

Прикладываю условный пример части конфига.
location /site1 {
root /var/www/site1/;
}
location /site2/ {
proxy_pass https://site2/;
}

При добавлении в конфиг перестает работать php для проксируемого site2. Попытка запроса https://example.com/site2/index.php выдает 404 Not Found.
location ~* \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; # подключаем сокет php-fpm
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
  • Вопрос задан
  • 216 просмотров
Решения вопроса 1
@dodo512
nginx.org/ru/docs/http/ngx_http_core_module.html#l...
Если у совпавшего префиксного location’а максимальной длины указан модификатор “^~”, то регулярные выражения не проверяются.

Нужно в location /site2/ добавить ^~
И ещё внутри location /site1 { добавить location ~* \.php$

location /site1 {
    root /var/www/site1;

    location ~* \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; # подключаем сокет php-fpm
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

location ^~ /site2/ {
    proxy_pass https://site2/;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Подозреваю, что нужно поднять блок location /site2/ выше блока location ~* \.php$ в файле.
Они по порядку совпадения идут, если у вас блок php-fpm стоит выше - все php независимо от описанного ниже-уходит на него
Ответ написан
Ваш ответ на вопрос

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

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