遵循此处的指导...
https://zeppelin.apache.org/docs/0.8.2/setup/security/authentication_nginx.html
我(几乎)逐字使用nginx.conf将Zeppelin部署在Nginx代理后面,以通过nginx通过https实现基本身份验证,作为我内部不受保护的Zeppelin实例的代理。我的意图是通过使用不超过上游内部通信未加密的https直到nginx来实现机密性-假设所有外部通信均已加密和认证。我对这个齐柏林飞艇网站的印象是,他们在这里的指导可以通过合理但保守的现代安全标准来实现。
我担心nginx身份验证代理无法为websocket端点实现与HTTP端一样的功能。我的问题(主要是针对Zepp贡献者)是,这是否建议Nginx身份验证和https config采取任何措施来保护websocket通道免遭未经授权的使用?客户端的Zeppelin服务器是否通过/ ws uri连接进行身份验证?
这里的链接2通过启用Zepellin内部的身份验证系统,听起来像/ so /是“安全的”。但是,这似乎与Zeppelin团队在第一个链接中建议将身份验证和Zeppelin关注点分开的更好建议相违背。
https://zeppelin.apache.org/docs/0.6.2/security/shiroauthentication.html
那么,可以使用Nginx通过HTTP设置在基本身份验证之后加强Zeppelin(与基本身份验证一样严格)吗?换句话说,Zeppelin是对ed内部的websocket客户端进行身份验证,还是可以欺骗nginx身份验证的Zeppelin前端,而无需nginx要求密码就可以建立websocket连接?如何更改此nginx.conf以便为非https,非wss Zeppelin上游服务器实现安全的nginx代理?
upstream zeppelin {
server 192.168.1.200:38080;
}
server {
listen 443 ssl;
server_name mysite.com;
ssl_certificate /etc/nginx/key/nginx_20191222.crt;
ssl_certificate_key /etc/nginx/key/nginx_20191222.key;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://zeppelin;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
auth_basic "Private site";
auth_basic_user_file conf.d/passwd;
}
location /ws {
proxy_pass http://zeppelin;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; #websocket;
proxy_set_header Connection upgrade;
proxy_read_timeout 86400;
}
}