Apache2: 동일한 VHOST에 2개의 PHP 버전

Apache2: 동일한 VHOST에 2개의 PHP 버전

전면 컨트롤러가 URI에 따라 내 레거시 앱이나 새 앱으로 리디렉션되도록 하여 내 앱을 PHP 5.6에서 PHP 8.0으로 마이그레이션하고 있습니다.

별칭으로 시도했는데 작동하지만 별칭 없이 둘 다에 대해 정확히 동일한 호스트를 유지해야 합니다.

예: https://foo.bar.com/my_php80_routes https://foo.bar.com/my_php56_routes

별칭을 사용한 만족스럽지 못한 시도는 다음과 같습니다.

<VirtualHost *:80>
    ServerName foo.bar.com

    DocumentRoot /var/www/html/foobar/public
    # Unwanted prefix
    Alias /legacy /var/www/html/foobar/legacy/web

    <Directory /var/www/html/foobar/public>
        AllowOverride none
        Require all granted

        SetEnv APP_ENV "dev"

        # Handled by php8.0 : ok
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost/"
        </FilesMatch>

        FallbackResource /index.php
        DirectoryIndex index.php
    </Directory>

    <Directory /var/www/html/foobar/legacy/web>
        AllowOverride none
        Require all granted

        # Handled by libapache2-mod-php5.6 : ok
        FallbackResource /app_dev.php
        DirectoryIndex app_dev.php
    </Directory>

    ErrorLog /var/log/apache2/foobar.log
    CustomLog /var/log/apache2/foobar.log combined
</VirtualHost>

"FOOBARAPP_LEGACY: 1"과 같은 사용자 정의 HTTP 헤더를 기반으로 하는 다른 방법을 검색했지만 Apache를 사용하여 HTTP HEADER를 파일 시스템 위치에 매핑하는 방법을 찾지 못했습니다.

다른 해결책이 있습니까?

[편집하다]

나는 나 자신을 더 잘 설명하려고 노력할 것입니다.

내가 달성하려는 것은 각각 다른 PHP 버전에서 실행되는 2개의 응용 프로그램을 갖는 것입니다. 하나는 "메인 앱"(PHP8.0의 새 앱)이고 "메인에서 경로를 찾을 수 없으면 "두 번째 앱"으로 리디렉션됩니다. 앱". 이 모든 것은 최종 사용자에게 완전히 투명합니다. (동일한 도메인, 접두사 없음)

만약에https://foo.bar.com/posts아직 마이그레이션되지 않음: 기본 앱이 경로를 찾지 못하고 콘텐츠를 제공할 두 번째 앱으로 리디렉션됩니다.

이 엔드포인트가 "Main App"으로 마이그레이션되면: Main App이 경로를 찾아 콘텐츠를 제공합니다.

그래서 /prefix 또는 새 하위 도메인을 포함하지 않는 솔루션을 요청하고 있습니다.

답변1

그래서 루프백에서 호스트에 액세스하기 위해 프록시 모듈로 이동하는 파이프를 통해 특정 가상 호스트를 퍼널하려고 합니까??? 하지만오직PHP 파일의 경우? 그것은 불필요하게 복잡하게 들립니다.

보조 포트에서 두 번째 가상 호스트를 실행하고 mod_proxy를 사용하여 전체 가상 호스트를 처리하는 것은 어떨까요? (즉, 일반적으로 업그레이드를 수행하고 여전히 인터넷 연결을 유지하는 "방식"입니다).

또는 마이그레이션할 때 문자 그대로 각각에 대해 가상 호스트를 수행할 수 있습니다. 그런 다음 "대체" URL이 "잘못된" 호스트에 나타날 때 가상 호스트 간에 간단한 리디렉션을 드롭인합니다.

이러한 종류의 마이그레이션을 처리할 때 다음을 선택하세요.가장 단순한"이것 대 저것"의 형태를 취하고 그런 식으로 굴립니다.

아니면 만약 내가완전히질문에서 "질문"을 놓쳤습니다... 동일한 인스턴스에서 여러 버전의 PHP를 성공적으로 실행하고 있습니까? 솔직하게 설명해주세요...~ 아니다제가 추천하고 싶은 것은... PHP입니다. ;-)

관련 정보