Ssl
Apache ProxyPass 只有一個文件到不同的本地主機埠?
我一直無法找到解決這個確切問題的方法:
- 我在 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>