nginx 中location和root,你确定真的明白他们关系?

最近公司开发新项目,web server使用nginx,趁周末小小的研究了一下,一不小心踩了个坑吧,一直404 not found!!!!!当时卡在location和root中,但是网上却比较少聊这方面的关系,一般都是聊location匹配命令(这里可以看看http://www.nginx.cn/115.html),花了一下午,彻底搞清楚了location和root到底怎样找到文件的。

nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应。root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。

[root]
语法:root path
默认值:root html
配置段:http、server、location、if

[alias]
语法:alias path
配置段:location

root实例:

location ^~ /t/ {
     root /www/root/html/;
}

如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

alias实例:

location ^~ /t/ {
 alias /www/root/html/new_t/;
}

如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

注意:

1. 使用alias时,目录名后面一定要加"/"。
3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
4. alias只能位于location块中。(root可以不放在location中)

摘引自:http://blog.csdn.net/u011510825/article/details/50531864

时间: 2024-10-06 22:23:57

nginx 中location和root,你确定真的明白他们关系?的相关文章

nginx的location配置root、alias用法和区别

root & alias区别root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上root的处理结果是:root路径+location路径alias的处理结果是:使用alias路径替换location路径alias是一个目录别名的定义,root则是最上层目录的定义还有一个重要的区别是alias后面必须要用"/"结束,否则会找不到文件的,而root则可有可无 实例详解root实例:location ^~

nginx的location、root、alias指令用法和区别

http://www.nginx.cn/4658.html nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:[root]语法:root path默认值:root html配置段:http.server.location.if[alias]语法:alias path配置段:location root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上.root的处理结果是:root路径+locati

Nginx中location配置[转]

关于一些对location认识的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通,再匹配正则”解释不了大家平时习惯的按“先匹配正则,再匹配普通”的实践经验.这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配(实际的规则,比这复杂,后面会详细解释). 2. location 的执行逻辑跟 location 的编辑顺序无关. 矫正:这句话不全对,

测试Nginx中location的优先级!

location [=|~|~*|^~] /uri/ { … } = 开头表示精确匹配 ~ 开头表示区分大小写的正则匹配 ~* 开头表示不区分大小写的正则匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa, 可以被规则^~ /static/ /aa匹配到(注意是空格). !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则 / 通用匹配,任何请求都会匹配到. 多个location配置的情况下匹配

nginx中location中关于proxy_pass和rewrite的应用

1,问题描述 upstream datacollectbackend{ #ip_hash; server 10.234.1.211:6100 max_fails=5 fail_timeout=30s; server 10.234.1.26:7100 max_fails=5 fail_timeout=30s; } location ~* ^/OCC_DATACO_WEB/.*$ { include deny.conf; proxy_pass http://datacollectbackend; i

关于Nginx中Location配制

以前都是以二级域名配制项目,近期业务需要,需要在一个域名下进行二级扩展(例:www.guodong.com/a/ www.guodong.com/b/ )闲话不多说,直接上图 对Location一些理解:admin.guodong.com/sfaadmin项目全路径:/data/www/ceo/sfaadmin域名中的sfaadmin对应全路径中的sfaadmin.希望对你有用. 原文地址:https://blog.51cto.com/709151/2430102

nginx中location中的

http://blog.sina.com.cn/s/blog_647a022e01016140.html http://bbs.csdn.net/topics/330099906 http://www.cnblogs.com/AaronLi/archive/2011/09/02/2164355.html http://blog.csdn.net/qiluluwawa/article/details/8096110 http://bbs.csdn.net/topics/390943510 http

Nginx中的一些匹配顺序总结

Nginx中经常需要做各种配置,总结如下: 1.server_name配置 nginx中的server_name指令主要用于配置基于名称虚拟主机,同一个Nginx虚拟主机中,可以绑定多个server_name,各个域名用空格隔开即可.如下: server { listen 80; server_name test.com www.test.com; ... ... } 如果server_name有多个,那么通过代码如$_SERVER["SERVER_NAME"]获取的始终将是Nginx

nginx的location root 指令

原文:http://blog.csdn.net/bjash/article/details/8596538 location /img/ { alias /var/www/image/; } #若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件 location /img/ { root /var/www/image; } #若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下