Nginx学习笔记——相同server_name优先级、location优先级、try_files、alias - Go语言中文社区

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 请求参数错误

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u012525096/article/details/84374672
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢