• Linux question ? self Apache эх, не думал что буду на жуйкаче советов спрашивать, ибо тут всё больше как на сраном пикабу, про украину и прочую политоту, но больше негде(

    кароч, такой расклад — апач, за ним приложение на ноджс, апач настроен на ProxyPass/ProxyPassReverse на конкретный VirtualHost. Всё работает прекрасно. Но потом заказчик вспомнил, что на старом приложении написаном на php осталось пару папок, которые не переписали и за переделку которых он платить не хочет, потому что "итаквсёработает".

    Собственно вопрос знатокам: можно ли сконфигурить апач 2.4 на работу ProxyPass/ProxyPassReverse на корень, а пару конкретных адресов, типа "/dir1" и т.д. прописать на "SetHandler application/x-httpd-php", чтобы приходящие туда запросы апач не проксировал, а запускал пыховский обрабочик?

    я неделю провисел читая базовые мануалы на httpd.apache.org/docs/2.4, но всё что я нашёл — апач даёт тупой отлуп, типа конструкция такая то, не разрешена внутри конструкции такой-то. Хотя, какого хуя, Карл, это же ёбанная программа, она должна работать так, как я хочу.

    Короче буду благодарен за помощь :3
    ♡ recommended by @kurator88@mastodon.social

Replies (11)

  • @kitt, могу только посоветовать переключиться на nginx или litespeed, по особенностям apache не подскажу потому что сам их не знаю,
    но можешь попробовать сюда выложить конфиг VirtualHost
  • @kitt, В VirtualHost прямо в корне прописывай DocumentRoot на путь с php сайтом. Ниже, в отдельных Location — урлы, ведущие на ноджс
  • @Shura, я на 100% не уверен, что так получится, но у меня похожая схема работает. Второй вариант — поставить перед апачем нжинск и рулить им. А вместо одного апача запустить 2 — один на php, второй на ноду
  • @Shura, там прикол в том что на ноде отрабатывается 50 урлов первого уровня, типа /level1path
    а на пхп всего 2, поэтому я хочу по дефолту прописать проксирование на ноду, а 2 пути отдельно на пхп
  • @Shura, да не хочется зоопарк разводить
  • @kitt, пока заработал вот такой конфиг:
    <VirtualHost *:80>
    ServerAdmin admin@localhost

    <Location "/">
    ProxyPass "http://localhost:3000/"
    ProxyPassReverse "http://localhost:3000/"
    </Location>

    DocumentRoot "c:/Users/anon/scripts/www-root/results/"
    <LocationMatch "/results">
    ProxyPass !
    ProxyPassReverse !
    </LocationMatch>


    <LocationMatch "/results/.*/.*php$">
    SetHandler application/x-httpd-php
    </LocationMatch>

    </VirtualHost>

  • @kitt, нечто типа
    ProxyPass result !
    ProxyPass / localhost:3000
    ProxyPassReverse / localhost:3000

    ну и дальше твой LocationMatch "/results/.*/.*php$"
    или
    <Location result>
    SetHandler application/x-httpd-php
    </Location>
    но это проверять надо
  • @ramok, спасибо, я нечто подобное нагуглил за полночи. ключевой была конструкция "ProxyPass location !" чтобы туда отключить проксирование. А как её подключать — есть несколько способов
  • @kitt, эх, самое смешное, что на локалхосте под виндой на седьмом ксампе всё прекрасно работает, а на боевом сервеке под убунтой 20.4 ЛТС начинает говнить на пыховский обработчик.
    Тоесть
    <LocationMatch "/results/.*/.*php$">
    SetHandler application/x-httpd-php
    </LocationMatch>
    вообще не отрабатывает, отдаёт пыховский файл плэйн текстом. Пробовал отлаживать, добавлять в эту конструкцию header set x-fuck-u-mega-test 1234 и менять значение при каждом изменении конфига — хеадер меняется, но пыхоскрипт всё также вафлит и не интерпретируется, отдаваясь как плаэйн текст((
  • @kitt, пробовал менять на Location/LocationMatch/Directory/DirectoryMatch/File/FileMatch
    header set отрабатывает норм, в инструментах разработчика всё отображается, SetHandler application/x-httpd-php идёт по пизде без каких либо записей об ошибках(
  • @kitt, за что мне это всё, я вообще так то 1сник