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 配置:


一次 HTTPRequest TimeOut 分析

现象:访问产品间歇性出现TimeOut

现象:访问其他网站正常,但是只要是访问公司的产品网站有时就会非常缓慢,有时候会出现504 网关超时。 这种现象也是间歇性发生

收集基础信息

所有产品对外的nginx 出口机是10.9.171.123,外网IP是123.59.83.77

以下以:www.clickhouse.com.cn (clickhouse也是配置在ucloud 上) 为例进行分析:

1
2
curl www.clickhouse.com.cn -o /dev/null
curl www.clickhouse.com.cn -o /dev/null -x 10.9.171.123:80

Your browser is out-of-date!

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

×