Ssl

Apache ProxyPass 只有一個文件到不同的本地主機埠?

  • February 1, 2018

我一直無法找到解決這個確切問題的方法:

  • 我在 localhost:3000 上執行了一個應用程序
  • 我使用 qa.mysite.com 為我的 localhost:3000 應用程序設置了代理(對於其他 js)
  • 我添加了在 localhost:3333 上執行的第二個應用程序

第一個應用需要引用一些 localhost:3333 css 和 js 文件:

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

我試過這個conf(和變體):

<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 錯誤或拒絕連接。

知道我做錯了什麼嗎?:)

您需要先放置更具體的 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>

引用自:https://serverfault.com/questions/895097