location 语法
1
location [=|~|~*|^~] /uri/ { ... }
=
表示精确匹配,优先级最高,匹配成功后则停止向下搜索。
1 2 3 4 5 6 7 8
# 精确匹配,必须是 127.0.0.1/ location = / { ... } # 精确匹配,必须是 127.0.0.1/login location = /login { ... }
^~
对 uri 起始字符 做 字符串匹配,不是 正则匹配。区分大小写。
1 2 3 4
# 127.0.0.1/static/js location ^~ /static/ { ... }
~
对 uri (可以不是起始字符串)做 正则匹配,区分大小写。
1 2 3 4
# 区分大小写,以 gif,jpg,js结尾 location ~ \.(gif|jpg|png|js|css)$ { ... }
~*
对 uri (可以不是起始字符)做 正则匹配,不区分大小写。
1 2 3 4
# 不区分大小写,匹配.png结尾的。 location ~* \.png$ { ... }
!~ 和 !~*
都是非xx得正则匹配,但是 !~ 区分大小写,!~* 不区分大小写。
1 2 3 4 5 6 7 8 9
# 区分大小写,匹配不以.xhtml结尾的 location !~ \.xhtml$ { ... } # 不区分大小写,匹配不以.xhtml结尾的 location !~* \.xhtml$ { ... }
location 和 proxy_pass 是否以 / 结尾
在 location 中匹配的 url 最后有无 / 结尾,指的是模糊匹配与精确匹配的问题。
1.1 没有 / 结尾时,location /abc/def 可以匹配 /abc/defghi 的请求,也可以匹配 /abc/def/ghi ……
1.2 有 / 结尾时,location /abc/def/ 不能匹配/abc/defghi的请求,只能精确匹配 /abc/def/ghi这样的请求
在 proxy_pass 中代理的 url 最后有无 / 结尾,指的是在 proxy_pass 指定的 url 后要不要加上 location 匹配的 url 的问题。
举例: http://xpzzd.com/proxy/login.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
# 情况1 # proxy_pass的 最终地址就是: http://xpzzd.com:8000/login.html 因为 proxy_pass 以 / 跟结尾,代表绝对路径,所以不会加上 location 匹配的 proxy location /proxy/ { proxy_pass http://xpzzd.com:8000/; } # 情况2 # proxy_pass 代理到 http://xpzzd.com:8000/proxy/login.html location /proxy/ { proxy_pass http://xpzzd.com:8000; } # 情况3 # proxy_pass 代理到 http://xpzzd.com:8000/disquz/login.html location /proxy/ { proxy_pass http://xpzzd.com:8000/disquz/; } # 情况4 # proxy_pass 代理到 http://xpzzd.com:8000/disquzlogin.html location /proxy/ { proxy_pass http://xpzzd.com:8000/disquz; }
修改上传文件大小
- 修改
nginx.conf
文件中http
节点下client_max_body_size 1024m
; - 执行命令
nginx -s reload