Nginx学习笔记——相同server_name优先级、location优先级、try_files、alias

相同server_name多个虚拟主机优先级访问

比如如下配置:

server {
	listen	80;
	server_name testserver1 127.0.0.1;
	location {
		...
	}
}
server {
	listen	80;
	server_name testserver2 127.0.0.1;
	location {
		...
	}
}

比如配置了不同的虚拟主机,使用了相同的IP和端口。
当进行多个相同IP和端口进行-t检查和启动时,都会爆出如下警告,但不影响启动。
在这里插入图片描述

结论

Nginx读取配置文件的时候是按照文件名顺序进行读取的,优先读取第一个文件名下的虚拟主机(IP端口相同)。
如server1.conf,server2.conf,那优先加载的配置是server1.conf下面的配置。

location匹配优先级

=:进行普通字符精确匹配,也就是完全匹配(高优先级)
^~:表示普通字符匹配,使用前缀匹配(高优先级)
~ \~*:表示执行一个正则匹配()
如下配置:

    location = /code1/ {
        rewrite ~(.*)$ /code1/index.html break;
    }

    location ~ /code.* {
        rewrite ^(.*)$ /code3/index.html break;
    }

    location ^~ /code {
        rewrite ^(.*)$ /code2/index.html break;
    }

范文链接http://XXX.XXX.XXX.XXX/code1/,则访问到的是Server1。
将第一条注释掉,则访问到的是Server2(匹配到第二条,不是高优先级,就接着匹配),将第二条注释掉,才访问到Server3。

try_files使用

顺序检测文件是否存在,如

location / {
	try_files $uri $uri/ .index.php
}

$uri存在,则返回结果,若不存在,则接着访问$uri/,直到返回结果或者没有结果返回错误。

Nginx的alias和root区别

root

location /request_path/image/ {
	root /loca_path/image/;
}

一个请求http://XXX.XXX.XXX.XXX/request_path/iamge/cat.png,则实际的资源路径为/local_path/image/request_path/image/cat.png,实际是root+请求路径。

alias

location /request_path/image/ {
	alias /loca_path/image/;
}

一个请求http://XXX.XXX.XXX.XXX/request_path/iamge/cat.png,则实际的资源路径为/loca_path/image/cat.png,没有请求的那个路径。

用什么方法传递用户的真实IP

使用remote_addr经过多级代理就无法获取真实用户的IP。
使用X-Forwarded-For容易被篡改。
方案:和每一级代理取得连续,进行HTTP头字段的添加,一级一级传递。

其他

错误码

413 Request Entity Too Large

修改用户上传文件限制 client_max_body_size

502 bad gateway

后端服务器无响应

504 Gateway Time-out

后端服务执行超时

403 访问被拒绝

404 资源未找到

400 请求参数错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值