1,相同的server_name多个虚拟主机优先级访问
在多个虚拟机里面假如有多个server_name,那么他们的优先级是什么?
例子:
#/etc/nginx/conf.d 文件夹夏敏文件排序方式
testserver1 testserver2.conf
#testserver1.conf
server{
listen 80;
server-name testserver1 waliblog.com;
location{
root /opt/app/code1;
index index.html;
}
}
#testserver2.conf
server{
listen 80;
server_name testserver2 waliblog.com;
location{
root /opt/app/code2;
index index.html;
}
}
当多个相同的server_name时,nginx会按读取/etc/nginx/conf.d文件下面配置文件先后来决定的,所以testserver1.conf会被优先读取,会默认访问 /opt/app/code1
2,location匹配优先级
匹配规则 描述
= 进行普通字符精确匹配,也就是完全匹配
^~ 表示普通字符匹配,使用前缀匹配
~ \~* 表示执行一个正则匹配(),(~)不区分大小写,(~*)区分大小写
优先级从高到低
实例:
location =/code1/{
rewrite ^(.*)$ /code1/index.html break1;
}
location ~/code.*{
rewrite ^(.*)$ /code3/index.html breake1;
}
location ^~/code.*{
rewrite ^(.*)$ /code2/index.html breake1;
}
nginx会优先匹配顺序第一个,第三个,第二个
3,try_files的使用:
按顺序检查文件是否存在
例子·,
location / {
try_files $uri $uri / / index.html;
}
首先会查找uri/,如果还不存在就会查看/index.html文件是否存在,存在则返回。不存在就会返回404
例子2
location / {
root /opt/app/code1/cache;
try_files $uri @wail;
}
location @wail{
proxy_pass http://127.0.0.1:8080;
}
4,alias和root区别
alias和root 都是定义访问根路径
root
location /blog/image/ {
root /opt/app/image;
}
当访问的路径是
当访问的路径是`[http://www.walidream.com/blog/image/cat.png](http://www.walidream.com/blog/image/cat.png)`时,实际上访问的路径是`[http://www.walidream.com/opt/app/image/blog/image/cat.png](http://www.walidream.com/opt/app/image/blog/image/cat.png)`
alias
location /blog/image/{
root /opt/app/image/;
}
当访问的路径是`[http://www.walidream.com/blog/image/cat.png](http://www.walidream.com/blog/image/cat.png)`时,实际上访问的路径是`[http://www.walidream.com/opt/app/image/cat.png](http://www.walidream.com/opt/app/image/cat.png)`没有了`/blog/image/`路径。
5,如何获取用户的真实ip
当客户端访问服务器时,不是直接访问,而是经过了层层代理之后访问的服务器,我们应该如何精准的获取客户端的ip?
在一级代理时设置x-Real_Ip=$remote_addr,然后在其他代理透传下去,就可以获取用户真实的ip;
6,nginx中常见的错误代码
6.nginx中常见的错误码
状态码 描述
301 永久重定向
302 临时重定向
403 禁止访问
404 未找到文件
413 用户上传文件限制client_max_body_size
500 服务器遇到错误,无法完成请求
502 后台服务无响应
504 后台服务执行超时