关于nginx加载配置文件的巨坑

赶紧把博客写了,趁热打铁,不然怕晚上有些细节不记得

一、巨坑问题引入

  今早前端开发又来追我一个问题,上月底29日问过(我还以为他完全忘记这事,或者悄咪咪地这问题自己解决了)。说是他本地掉线上系统的登录接口,一直转圈登不上。还一再给我强调要是登不上,调试线上环境的问题调不了

  然后浏览器打开正式环境的登录接口,返回400,nginx我是从来没有见过返回400的状态码的,当然我自己也没有定义,没事搞这玩意干嘛

再看看nginx日志:

  当时想着要我查这玩意,感觉很崩溃,严重超出能力范围外的。也无从下手,今天又逼着我弄,真是把我逼入绝境。前运维,开发朋友都问了一轮,无果,自己也无果。

  前运维倒是叫我问拿一下开发本地转发的nginx配置文件,看看是不是写错了。还真的写错,不过改回来也是不行的。

。。。server {    listen       80;    server_name  127.0.0.1;                  。。。    location / {        index  login.html index.htm;    }    location  /后端项目名/ {           #后端地址 端口(这个是他加的注释)        proxy_pass     https://域名/线上后台目录/rexxxe/sexxxty_login/new;           。。。     }}

第一眼看,觉得转发怪怪的,以往不是proxy_pass某个地址就好了么,为啥是接口地址的。然后改过来,变成:

proxy_pass     https://域名/线上后台目录/;

浏览器报错还是那样:400。然后叫他重新在本地跑他的nginx,我实时看下nginx和后台日志,一条记录都木有!!!!

然后只能求助我们的中级后端开发 = =(公司跟我最好的开发同事,算半个运维)

二、巨坑问题解决过程

  开发尝试把转发地址改到微信后台,也调不了。然后这伟大兼具的任务交给他处理了,他去看nginx配置文件(当然我也是看了一轮的,没有什么异样)

  终于帮我拯救起来了。说是nginx有个配置文件,也是转发到后台目录的,没开。顺序原来是箭头这样的

先简单说下这两个配置文件的区别:

假设根域名是ljy

(1)www.conf 的server_name 写的是:server_name  ljy.com www.ljy.com;    关了页面登录后台转发(因为他们说这个域名是没用的,我就注释了,真是神又是他们,鬼也是他们)

(2)yjxxx.conf 的server_name 写的是:  server_name yjxxx.ljy.com;        开了页面登录后台转发

贼坑爹的事来了:

  开发本地nginx 写的server_name 127.0.0.1;   竟然默认调的是www.conf的后台转发,因为我注释了这段,所以调不了后台就报错了。

  而且还有个nginx加载配置文件的先后顺序,默认优先调用www.conf 再调 yjxxx.conf 的配置文件

问题最终解决:

两个方法(选其一就好):

方法一:调换两个配置文件顺序,可以不开www.conf 的扫描后台转发

方法二:不调换顺序,要开www.conf 的后台转发配置 来源:https://www.icode9.com/content-3-845651.html

(0)

相关推荐