nginx添加basic表单认证

nginx给网站添加basic表单认证

很多大数据组件的adminUI 并没有设计授权认证,可以通过nginx 做一个简单的用户名密码认证:

  1. 生成密码文件
1
2
3
4
yum install httpd-tools -y

#输入密码,就会生成加密的用户密码文件
htpasswd -c /etc/nginx/conf.d/.ngpasswd admin

2 nginx 加上 auth_basic信息


Trino、Kudu 自监控页面配置Nginx Path访问

Trino、Kudu 自监控页面配置Nginx Path访问

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在Nginx代理后遇到的问题和解决方案

OAuth2 Client在实际运用过程中遇到的问题

服务程序集成了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配置经验

1. Nginx 会导致 带下划线命名的Header参数丢失

nginx对下划线的头信息做了限制

  1. 不用下划线

  2. 配置nginx 参数

    underscores_in_headers on; (默认 underscores_in_headers 为off)

2. nginx proxy_pass后的url加不加/的区别

第一种:proxy_pass后缀不加斜杠

1
2
3
location /abc/ {
proxy_pass http://172.16.1.38:8080;
}

第二种:proxy_pass后缀加斜杠

1
2
3
location /abc/ {
proxy_pass http://172.16.1.38:8081/;
}

上面两种配置,区别只在于proxy_pass转发的路径后是否带/


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×