我在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