我在Apache Web服務器後面運行我的Apache Zeppelin實例,其中的web服務器僅用作預留代理服務器。Apache反向代理服務器後面的Apache Zeppelin
如果我正在瀏覽反向代理網站https://my-domain.com/zeppelin/
我收到了一個包含資產和按鈕以及所有內容的網站,但Zeppelin的websocket將無法連接。 Browser-Dev-Tools在說405 HTTP method GET is not supported by this URL
爲URL https://my-domain.com/zeppelin/ws
。
如果我要直接在Zeppelin網站上(f.e. http://priv.my-domain.com/zeppelin
),一切正常。所以它似乎不是Zeppelin-Code中的錯誤,而是反向代理配置中的一個問題。
我的Apache反向代理的配置是這樣的:
<VirtualHost *:443>
ServerName my-domain.com
# don't loose time with IP address lookups
HostnameLookups Off
ProxyRequests Off
ProxyPreserveHost Off
SSLEngine On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
...
ssl cert stuff
...
<Location /zeppelin/ws>
ProxyPass ws://priv.my-domain.com:8080/zeppelin/ws
ProxyPassReverse ws://priv.my-domain.com:8080/zeppelin/ws
Order deny,allow
Deny from all
Allow from <my-ip>
</Location>
<Location /zeppelin/>
ProxyPass http://priv.my-domain.com:8080/zeppelin/
ProxyPassReverse http://priv.my-domain.com:8080/zeppelin/
Order deny,allow
Deny from all
Allow from <my-ip>
</Location>
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
這沒有什麼區別,如果我刪除從配置第一WS-位置。 你有什麼想法嗎?
EDIT FOR SOLUTION:在下面的答案後,我修改了我的conf文件,現在它正在工作!非常感謝你!
我工作的conf:
<VirtualHost *:443>
ServerName my-domain.com
# don't loose time with IP address lookups
HostnameLookups Off
ProxyRequests Off
ProxyPreserveHost Off
SSLEngine On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
...
ssl cert stuff
...
<Location /zeppelin/>
ProxyPass http://priv.my-domain.com:8080/zeppelin/
ProxyPassReverse http://priv.my-domain.com:8080/zeppelin/
Order deny,allow
Deny from all
Allow from <my-ip>
</Location>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =WebSocket [NC,NV]
RewriteRule ^/(.*) ws://priv.my-domain.com:8080/$1 [P]
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
謝謝,它現在工作!查看我編輯的簡化Rewrite-Part無用戶身份驗證。 – BeerCamper