做了一个德国高防plesk卖虚拟主机,奈何地理位置太过于遥远,控制台使用上速度难以接受。用户站点可以使用cloudflare等等的加速手段,控制台能否也这么干呢?理论是完全可以的,那么时间上手看吧。安装日常配置nginx反向代理的步骤完成配置,惊奇的问题出现了?
报错
翻译过来是:没有指定用户身份认证方式
这个有点不好理解了?plesk采用用户名+密码的身份认证方式,我的用户名和密码完全正确,由于自然实在太白了,索性疯狂谷歌百度吧。
问题定位
既然返回的数据是“没有指定用户身份认证方式”,那么我们只能从这方面入手,这里可以大致判断一点服务器并没有接收到我们发送的用户名和密码。根据api调用的身份认证方式一般分为post发送验证信息和网页请求头加入验证信息两种方式。
nginx反向代理经过长期使用,是完全可以正常转发post请求内容的。那么来猜测一下问题应该在于网页请求头中加入的身份验证信息没被正确转发,为了进一步坐实这个猜测,自然debug看nginx的日志,果然发现了东西。
2020/04/16 01:27:56 [info] 5625#0: *1078154 client sent invalid header line: "
翻译过来就是:客户端发送了无效的header信息
谷歌关键词“nginx反代不能转发header请求头”,果然找到了相关内容,直接上手。
问题成功解决,原来是nginx对header name的字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉。
处理方法
1:配置中http部分 增加underscores_in_headers on; 配置
2:用减号-替代下划线符号_,避免这种变态问题。
YY一下:减号代替下划线,对于plesk认证方式做修改,自然这种小白明显是完成不了的。
语法:underscores_in_headers on|off 默认值:off 使用字段:http, server 是否允许在header的字段中带下划线。
参考资料
http://www.ttlsa.com/nginx/nginx-proxy_set_header/?spm=a2c4e.10696291.0.0.608b19a4DZXrfh
http://blog.csdn.net/wx_mdq/article/details/10466891