如上图支付宝支付成功后异步回调到公网域名请求,这里使用到了内网穿透功能,让支付宝支付成功的异步回调到内网穿透的域名请求上,流程大概如下,代理服务器代理本机,然后请求本机的host的域名,根据域名访问本机的虚拟机ip,访问到主机后访问80端口到nginx上,nginx会代理主机访问的域名查看配置的信息做处理,如果匹配到服务名,就会将该请求转到服务名下对应的应用服务,这里转向的是网关,在转的过程中网关会过滤请求,有各种过滤器就会导致ngix在转发请求时丢失浏览器的请求头信息如nginx会代理浏览器的当前request,担是不能与浏览器的request完全等价他会丢失请求头的一些信息如cookie和host的域名信息,这些域名参数在网关的过滤请求时会用到,丢失导致nginx报404问题。
nginx中的配置节点以及作用
重要的配置节点server 中的 location用于配置代理到的目标,常用的使用方式
会看到当浏览器发送内网穿透的域名时会匹配到然后处理域名的url逻辑部分,然后去从上到下匹配每一个location的节点 匹配到时通过proxy_pass http://gulimall代理到网关地址,如果nginx在浏览器转给nginx过程中丢失部分需要用到的请求头如Host时可以人为的加上,并能与网关对应的逻辑匹配上就能正确地让支付宝成功支付回调到公网的内网穿透的域名上后请求到自己的主机上。
这是代理的请求的目标地址,当有多个目标服务时可以通过配置实现负载均衡1如随机2一致性hash 3轮询