다른 서비스를 하위 도메인으로 노출하기 위해 로컬 호스트에서 ProxyPass를 사용하려고 하면 Apache 충돌이 발생합니다.

다른 서비스를 하위 도메인으로 노출하기 위해 로컬 호스트에서 ProxyPass를 사용하려고 하면 Apache 충돌이 발생합니다.

여러 웹사이트와 서비스에 대해 다음과 같은 디렉터리 구조가 있습니다.

/var/www/html/site1
/var/www/html/site2
/var/www/html/site3
/var/www/html/serv1
/var/www/html/serv2

site1폴더는 웹사이트를 호스팅합니다. 웹앱 서비스 와 폴더를 다음과 같이 표시 site1domain.com하고 싶습니다.serv1serv2

service1.site1domain.com
service2.site1domain.com

site1domain.conf그래서 이런 식으로 파일 에 가상 호스트를 구성하려고했습니다.

<VirtualHost *:80>
    ServerName site1domain.com
    ServerAlias www.site1domain.com
    DocumentRoot /var/www/html/site1
    <Directory /var/www/html/site1>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName service1.site1domain.com
    ProxyPreserveHost On
    ProxyRequest Off
    ProxyPass        "/" "localhost/serv1"
    ProxyPassReverse "/" "localhost/serv1"
</VirtualHost>

<VirtualHost *:80>
     ServerName service2.site1domain.com
     ProxyPreserveHost On
     ProxyRequest Off
     ProxyPass        "/" "localhost/serv2"
     ProxyPassReverse "/" "localhost/serv2"
</VirtualHost>

그러나 서비스와 관련된 가상 호스트 코드 블록으로 인해 서버 충돌이 발생합니다. 오류 코드 1로 종료됩니다.

누군가가 올바르게 구성하는 방법을 이해하도록 도와줄 수 있습니까?

답변1

그냥 어떻습니까:

<VirtualHost *:80>
    ServerName service1.site1domain.com
    DocumentRoot /var/www/html/serv1
</VirtualHost>

<VirtualHost *:80>
    ServerName service2.site1domain.com
    DocumentRoot /var/www/html/serv2
</VirtualHost>

mod_proxy가 필요하지 않습니다.

답변2

오류는 귀하의 원인으로 인해 발생했습니다.ProxyPass그리고ProxyPassReverse지시문에는계획URL의 일부입니다. 올바른 구문은 다음과 같습니다.

ProxyPass "/" "http://localhost/serv1" 
ProxyPassReverse "/" "http://localhost/serv1"

그러나 Andrew의 말은 맞습니다.역방향 프록시이 사용 사례에는 필요하지 않으며 최고의 기술도 아닙니다.

관련 정보