解决同事所谓的nginx反向代理问题
问题:同事研发的一个类似于请求转发工具,想要测试功能,请求首先进入到有外网ip的102服务器上的nginx,然后经过nginx反向代理至同事工作电脑ip60的80端口上,然后经由同事的服务转向103服务器的nginx上,再由103服务器的nginx分别根据不同的域名转向103的8080和8081服务上。问题,同事说经由103nginx转发后,test1与test2域名转发有误,test1应该转向8080,test2转向8081,但是在103nginx.conf文件中,test1 在上test2在下,但是同事访问test2时却转向了103的8080端口,同事描述,这两段nginx配置文件谁在上面谁生效,或者只有一段的时候生效。
问题排查:1、同事怀疑部署的nginx有误,要求重新部署,重新部署后问题一致,排查nginx问题。
2、怀疑研发同事开发的服务有误,将请求域名丢失,开始排查。
3、首先在同事电脑上直接排查,在电脑的hosts文件中域名指向103服务。
C:\Windows\System32\drivers\etc 在此路径下修改hosts文件(建议修改前备份)
修改完以后,直接在电脑上通过域名test1 test2分别访问,发现nginx反向代理无误,分别反向代理至103的8080 和8081端口,由此排查103的nginx没有问题。
(nginx可以加日志查看到来源ip与后向ip)
log_format main escape=json 'LB ip:
http_x_forwarded_for
time_local] “
request” ’
'$status
http_referer" ’
‘“
http_x_forwarded_for” “KaTeX parse error: Double superscript at position 39: … '̲"country_code":…geoip_city_country_code”,’
‘“country_code3”:“KaTeX parse error: Double superscript at position 51: … '̲"city_country_n…geoip_city_country_name”,’
‘“region_name”:“KaTeX parse error: Double superscript at position 39: … '̲"city_name":"geoip_city”’
'upstream_response_time $upstream_response_time request_time $request_time ';
4、排查102nginx跳转有无问题
在102的配置文件中,直接将test1 与test2转向103的80端口。相当于请求进入102nginx,然后转向103nginx,再转向103的8080与8081.
修改后重新请求,发现请求两个域名皆可正常跳转,所以102转向103无误。
5、排除法判断同事研发的服务有问题,丢失域名请求。所以一个请求进入103nginx时,会从上往下读取配置文件,所以会使用第一段配置文件。
6、论遇到一个总是造bug的同事真倒霉?