nginx给网站添加basic表单认证
很多大数据组件的adminUI 并没有设计授权认证,可以通过nginx 做一个简单的用户名密码认证:
- 生成密码文件
1 | yum install httpd-tools -y |
2 nginx 加上 auth_basic
信息
很多大数据组件的adminUI 并没有设计授权认证,可以通过nginx 做一个简单的用户名密码认证:
1 | yum install httpd-tools -y |
2 nginx 加上 auth_basic
信息
Trino 的WebUI 默认是 {domain/ip}:8080
Kudu 的WebUI 默认是 {domain/ip}:8051/8050
现在期望通过 {domain/ip}:80/trino、 {domain/ip}:80/kudu 来访问
在客户环境中并不能把这些端口都开放出来,那么就需要通过Nginx 配置 path 才能访问,直接设置 proxy_pass 并不能展现出来,kudu 的因为html中都是绝对路径,Trino中是由于cookie设置是固定的
也许可以通过 kudu或者trino本身的配置实现 path 访问,但是没找到,所以想了其他办法
服务程序集成了OAuth2-Client,以便于用户能够方便集成到支持OAuth2第三方登录的自有业务系统中。开发完成后,本地测试、或者直连服务程序,都没有问题。但凡放到线上环境,经过了nginx 转发后,我们的服务程序OAuth登录永远是以失败告终。
现象如下:
访问需要授权的接口时 https://blog.95id.com:4005/user_attr
,期望是跳转到授权服务器 github.com
进行登录授权,但实际都是跳转到``http://blog.95id.com/login`
因为当时直接用服务程序的端口没问题,就将解决思路放在了nginx 转发过程上。
当时线上环境路由规则类似于:
第一层:nginx1 4005 (ssl、负载均配置在这)
第二层:nginx2 4005
第三层:oauth2-client 8082
再看nginx 的配置,第一层nginx 配置:
nginx对下划线的头信息做了限制
不用下划线
配置nginx 参数
underscores_in_headers on; (默认 underscores_in_headers 为off)
第一种:proxy_pass后缀不加斜杠
1 | location /abc/ { |
第二种:proxy_pass后缀加斜杠
1 | location /abc/ { |
上面两种配置,区别只在于proxy_pass转发的路径后是否带/
Update your browser to view this website correctly. Update my browser now