一、前景总结最近在工作中遇到了一个坑。之前配置过很多次nginx虚拟主机和多级代理。本来以为自己很了解这个,但是前几天在对接京东的时候,发现完全是一头雾水,配置了多个虚拟主机。我不知道默认使用哪个。多加一个会影响前一个。少加一个会导致新接口不生效。也是因为来电者也是五花八门。有直接IP,有直接域名,也有二级代理。nginx虚拟主机对访问的地址有严格的匹配规则。很多人说IP和域名不是同一台机器,但是对于nginx虚拟主机来说,IP和域名是两个不同的服务器。2.真实环境简述A1端(调用者1)A2端(调用者2)A3端(调用者3)B端(中转端,直接IP)C端(服务代理提供商端)D端(后台服务)A1端通过B中转C端,再通过C端调用D端后端服务,A2端访问C端IP,再通过C端调用D端后端服务,A3端访问C端域名,然后通过C端调用D端和后端服务三、虚拟主机配置注意事项1、建议如果配置了include,不要在nginx.conf中添加server,否则会有如果include被放置在服务器之前和之后会产生影响;2.如果已经在nginx.confconfig中配置了server,如果后面要使用include添加server,如果include放在server前面:情况如下:2.1如果有nginx.conf中只有一台服务器,只要访问的url能到达nginx主机,就会使用这台服务器匹配2.2如果nginx.conf中有多台服务器,如果url的主机地址与server_name匹配,则去服务器,如果没有,去第一个服务器;2.3如果nginx.conf***.conf中include指定的vhosts目录下有*,则优先匹配conf文件的服务器。如果vhosts中有多个conf文件,如果vhosts中有多个conf文件,默认使用vhosts目录下的第一个文件,不会使用nginx.conf文件。3、如果之前在nginx.conf中配置了server,后面需要使用include添加server,如果include放在server后面:情况如下:3.1如果没有conf文件vhosts目录,它会默认匹配nginx.conf的server,默认匹配第一个server3.2如果vhosts目录下有conf文件,如果匹配到vhosts目录下的server,则去配置,如果没有,则去nginx.conf中的第一个server,如果使用include配置多个虚拟主机,建议不要在nginx.conf文件中配置server,在vhosts目录下配置。4、二跳如何配置服务器。匹配只认原来的url地址,如果目标nginx有服务器就匹配,没有就使用默认
