您的位置  > 互联网

Nginx对配置文件的区别,区别真的那么大吗?

比如BAT(百度、阿里巴巴、腾讯)、TMD(今日头条、美团、滴滴)等。 使用过Nginx的同学都知道,你只需要根据自己的需求更改配置并准确启动,就可以优雅地访问了。

那么Nginx非常喜欢配置文件,这就需要我们在更改配置文件的时候再三确认,否则可能会因为疏忽而酿成悲剧?

实际案例中,仅仅因为配置时少了一个字符“/”,就报了访问失败的错误,并收到投诉。 那么是什么原因造成的呢? 原因是:Nginx在配置代理传输时缺少一些“/”字符。 有的同学有疑问。 加或不加“/”差别真的那么大吗? 带着这个疑问,我们来探讨一下这个问题。

目录匹配详解

每个 nginx 都是一个匹配的目录。 nginx的策略是:当有访问请求到来时,会从上到下逐一解析并匹配访问地址。 匹配时,会执行对应大括号内的策略,并根据策略发出请求。 相应的。 基于访问地址:例如nginx配置如下:

/wddd/ { t 18000; ##修改为半小时18000; 18000; :8080; }

这将在访问期间进行匹配,从而将请求代理转发到本地服务。 响应后,信息将沿原路径返回。 总结:如果没有“/”,则请求可以模糊匹配以该字符串开头的所有字符串,但如果有“/”,则请求只能精确匹配字符本身。

这里举个例子:/可以匹配/,也可以匹配/*/等,只要以它开头的目录都可以匹配。 并且 // 必须完全匹配 // 这个目录的请求,不能匹配 // 或 /*/ 等请求。

有无“/”的四种区别研究

访问地址均如下: 例如。 请求全部匹配目录 /wddd/

第一种方式:加“/”

/wddd/ {:8080/; }

测试结果,请求被代理重定向到::8080/index.html

第二种:不加“/”

/wddd/ {:8080; }

测试结果,请求被代理重定向到::8080/wddd/index.html

第三种方法:添加目录加“/”

/wddd/ {:8080/太阳/; }

测试结果,请求被代理重定向到::8080/sun/index.html

第四种方法:添加目录不加“/”

/wddd/ {:8080/太阳; }

测试结果,请求被代理重定向到::8080/.html

总结

目录后面加“/”只能匹配目录。 不加“/”,不仅可以匹配目录,还可以对目录进行模糊匹配。 无论是否加“/”,都是直接拼接代理跳转地址。 为了加深印象,可以使用如下配置实验来测试:

{ 80; ; # -》 :8080 //xxx // { :8080; } # -》 :8080/xxx // { :8080/;

} # -》 :8080/*/xxx / { :8080;

} # -》:8080//xxx,请注意这里的双斜线,仔细分析。 /{:8080/;

} # -》:8080/,请注意这里haha和xxx之间没有斜线,分析一下原因。 // {:8080/哈哈;

} # pi6/xxx -》 :8080/哈哈/xxx // { :8080/哈哈/;

} # -》 :8080/哈哈/xxx / { :8080/哈哈; }

# -》:8080/haha//xxx,请注意这里的双斜杠。 / {:8080/哈哈/; } }