我正在Apache Web服务器后面运行我的Apache Zeppelin实例,其中web服务器仅用作保留代理 .
如果我正在浏览反向代理站点 https://my-domain.com/zeppelin/
我'm getting a website with assets and buttons and everything, but the websocket of Zeppelin won' t connect . Browser-Dev-Tools为URL https://my-domain.com/zeppelin/ws
说 405 HTTP method GET is not supported by this URL
.
如果我直接去Zeppelin网站(f.e. http://priv.my-domain.com/zeppelin
),一切正常 . 因此,似乎它不是Zeppelin-Code中的错误,而是reverse-proxy-config中的问题 .
我的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-location,则没有任何区别 . 你知道吗?
编辑解决方案:在下面的答案后我修改了我的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>
3 回答
这是我正在使用的conf,其中一些指定不一定适用于您的需求:
这是我想要反向代理Zeppelin服务器时创建的Includes文件 . 如果愿意,您可以或多或少地将其剪切并粘贴到vhosts conf文件中 .
只是为了补充一点,我能够使用Apache2和下面的配置重新路由到我的zeppelin实例 . 重要的是websocket连接 .
确保添加
到mods . 然后我运行了以下内容:
然后当你转到http:// reverseproxypublicIP /它将重新路由到你的Zeppelin实例 . 希望这有助于某人!