Apache ProxyPass apenas um arquivo para uma porta local diferente?

1

Não consegui encontrar uma solução para este problema exato:

  • Eu tenho um aplicativo em execução no host local: 3000
  • Eu tenho um proxy configurado para meu aplicativo localhost: 3000 com qa.mysite.com (para outros js)
  • Eu adicionei um segundo aplicativo em execução no host local: 3333

O primeiro aplicativo precisa fazer referência a alguns arquivos localhost: 3333 css e js:

<link rel="stylesheet" href="/css/my-css.css"/>
<script src="/js/my-js.js" defer></script>

Eu tentei este conf (e variações):

<VirtualHost *:443>
    ServerName qa.mysite.com
    SSLEngine on
    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off
    SSLCertificateFile "/etc/apache2/server.crt"
    SSLCertificateKeyFile "/etc/apache2/server.key"
    ProxyVia Full
    ProxyPreserveHost On
    ProxyPass "/" "http://localhost:3000/"
    ProxyPassReverse "/" "http://localhost:3000/"

    ProxyPass "/css/my-css.css" "http://localhost:3333/css/my-css.css"
    ProxyPassReverse "/css/my-css.css" "http://localhost:3333/css/my-css.css"
    ProxyPass "/js/my-js.js" "http://localhost:3333/js/my-js.js"
    ProxyPassReverse "/js/my-js.js" "http://localhost:3333/js/my-js.js"

</VirtualHost>
  • Atingir o qa.mysite.com produz o primeiro aplicativo em execução no localhost: 3000.
  • Mas também erros de CORS ou conexões recusadas.

Alguma ideia do que estou fazendo errado? :)

    
por Andrei 01.02.2018 / 02:36

1 resposta

1

Você precisa colocar as regras ProxyPass mais específicas primeiro. "/css/my-css.css" irá avaliar "/" primeiro. Como isso é verdade, você obterá a porta 3000.

Coloque o ProxyPass em "/" por último, pois é o fallback com tudo incluído.

<VirtualHost *:443>
    ServerName qa.mysite.com
    SSLEngine on
    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off
    SSLCertificateFile "/etc/apache2/server.crt"
    SSLCertificateKeyFile "/etc/apache2/server.key"
    ProxyVia Full
    ProxyPreserveHost On

        #Specific /css
    ProxyPass "/css/my-css.css" "http://localhost:3333/css/my-css.css"
    ProxyPassReverse "/css/my-css.css" "http://localhost:3333/css/my-css.css"

        #Specific /js
    ProxyPass "/js/my-js.js" "http://localhost:3333/js/my-js.js"
    ProxyPassReverse "/js/my-js.js" "http://localhost:3333/js/my-js.js"

       #Catch ALL for servername
    ProxyPass "/" "http://localhost:3000/"
    ProxyPassReverse "/" "http://localhost:3000/"
</VirtualHost>
    
por 01.02.2018 / 03:53