web-dev-qa-db-ja.com

Apache ProxyPassは1つのファイルだけを別のlocalhostポートに送信しますか?

私はこの正確な問題の解決策を見つけることができませんでした:

  • Localhost:3000で1つのアプリを実行しています
  • Qa.mysite.comでlocalhost:3000アプリにプロキシを設定しました(他のjsの場合)
  • Localhost:3333で実行する2つ目のアプリを追加しました

最初のアプリは、いくつかのlocalhost:3333 cssおよびjsファイルを参照する必要があります。

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

私はこの設定(およびバリエーション)を試しました:

<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>
  • Qa.mysite.comを押すと、localhost:3000で実行される最初のアプリが生成されます。
  • ただし、CORSエラーまたは接続の拒否。

私が間違っていることは何か考えていますか? :)

2
Andrei

より具体的なProxyPassルールを最初に置く必要があります。 「/css/my-css.css」は最初に「/」を評価します。それが成り立つので、ポート3000を取得します。

それがすべてを含むフォールバックなので、ProxyPassを「/」に最後に置きます。

<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>
2
Aiwa