Apache 역방향 프록시 구성

Apache 역방향 프록시 구성

그래서 저는 Apache 2.4.25를 실행하는 Debian 9 상자를 얻었습니다.

Apache가 다른 서버의 웹 콘텐츠도 제공하도록 하고 싶습니다(http://192.168.1.100:8088) 네트워크에서; 이 작업을 수행하기 위해 mod_proxy를 설정했지만 작업을 수행하는 데 어려움을 겪고 있습니다.

이 구성은 올바른 서버에서 일부 오류 콘텐츠를 가져오므로 거의 작동하는 것 같습니다. URL에 추가되는 app1 엔드포인트에 URL 문제가 있는 것 같나요? 이 끝점은 실제로 어디에도 존재하지 않으며 단지 요청을 잡는 데 사용됩니다.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyRequests Off
    <proxy *>
      Order deny,allow
      Allow from all
    </proxy>
    ProxyPass /app1 http://192.168.1.100:8088/
    ProxyPassReverse /app1 http://localhost/
</virtualHost>

모든 요청을 프록시하려고 하면 제대로 작동하지만 분명히 localhost의 어떤 리소스에도 액세스할 수 없습니다.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyRequests Off
    <proxy *>
      Order deny,allow
      Allow from all
    </proxy>
    ProxyPass / http://192.168.1.100:8088/
    ProxyPassReverse / http://localhost/
</virtualHost>

아마도 일종의 ReWrite를 수행해야 할 것 같은데요? 저는 특별히 Apache mod_proxy를 사용해 본 경험이 없습니다.

:-(

답변1

의견에서 언급했듯이 적어도 두 가지 명백한 문제가 있습니다.

  1. ProxyPass각 개인 과 명령문 의 "종료" 슬래시는 ProxyPassReverse일치해야 합니다.

  2. ProxyPassProxyPassReverse동일한 호스트를 참조해야 합니다 .

따라서 첫 번째 예에서는 다음과 같습니다.

ProxyPass /app1 http://192.168.1.100:8088/
ProxyPassReverse /app1 http://localhost/

해야한다:

ProxyPass /app1 http://192.168.1.100:8088
ProxyPassReverse /app1 http://192.168.1.100:8088

또는:

ProxyPass /app1 http://localhost
ProxyPassReverse /app1 http://localhost

두 번째 예에서는 /여기에 언급된 목적에 따라 "종료" 슬래시로 간주됩니다. 그래서:

ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://localhost/

호스트를 일치시키기만 하면 됩니다.

ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://192.168.1.100:8088/

또는:

ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/

노트

  • Apache가 프록시하는 URL을 처리하는 방식을 사용하면 수신 애플리케이션이 자체 URL을 구성하는 방식에 따라 /더 나은 결과를 얻을 수 있다는 점을 언급할 가치가 있을 것입니다./app1

  • 수신 애플리케이션의 작동 방식에 따라 여러 URL을 프록시해야 할 수도 있습니다.

  • 어떤 이유로 아직 활성화되지 않은 경우 추가로 활성화 mod_proxy_html하고 싶을 수도 있습니다 .mod_proxy_httpmod_proxy

관련 정보