Nginx学习笔记——location

配置详解

location语法

location [=|~|~*|^~|@] /uri/ { … }php

~ 正则匹配css

~* 正则匹配且不区分大小写html

= 非正则匹配,执行普通匹配,遵照 严格匹配(彻底同样)nginx

^~ 非正则匹配,执行普通匹配,遵照 最大前缀(前缀同样便可,有多个选择最大前缀匹配的)web

 

通常状况 普通匹配后 若是正则匹配成功 则覆盖普通匹配,除非使用 = 或者 ^~ 亦或者隐含的精确匹配 segmentfault

eg1
a) location /a/b/c.html{} (特殊状况 属于最大前缀匹配的精确匹配)
b) location /a/{}
c) location ~ \.html${}
> GET /a/c.html 会匹配到 c)
> GET /a/b/c.html 会匹配到 a)后端

因此匹配优先级tomcat

(=) > (完整路径) > (^~ 路径) > (~,~* 正则顺序) > (部分起始路径) > (/)服务器

建议配置(转载 http://www.javashuo.com/article/p-rfvnylnv-z.html框架

#直接匹配网站根,经过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
#这里是直接转发给后端应用服务器了,也能够是一个静态首页
# 第一个必选规则
location = / {
    proxy_pass http://tomcat:8080/index
}
# 第二个必选规则是处理静态文件请求,这是nginx做为http服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
    root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}
#第三个规则就是通用规则,用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求,本身根据实际把握
#毕竟目前的一些框架的流行,带.php,.jsp后缀的状况不多了
location / {
    proxy_pass http://tomcat:8080/
}

==============================================================================

location内部配置(有待补充)

proxy_pass http://localhost:8080$request_uri
被代理服务器的URL

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上

===============================================================================

最近遇到的问题(20160920)

静态资源配置的时候

location ~* /blog/img {
	root	/usr;
}
#这个location 会将 匹配/blog/img路径的请求,指定到 /usr/blog/img/... 文件
#此处需注意静态资源访问,须要nginx所属用户、用户组有权限
相关文章
相关标签/搜索